Округление до N знаков после запятой в C++

Рейтинг: 0Ответов: 1Опубликовано: 23.02.2023

Решаю задачу на округление до N знаков после запятой. С функцией round() получается округлить только до 5 знаков после запятой, а требуется округлить более точно. Как это можно сделать?

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int a;
    double e =  2.7182818284590452353602875;
    cin >> a;
    e = round(e * pow(10, a)) / pow(10, a);

    cout << e << endl;

    return 0;

}

Ответы

▲ 2

Для более точного округления до N знаков после запятой можно воспользоваться функцией setprecision() из заголовочного файла iomanip. Эта функция принимает на вход количество знаков после запятой, до которых нужно округлить число, и возвращает поток, который можно использовать для вывода числа с нужным количеством знаков после запятой.

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

int main() {
    int a;
    double e = 2.7182818284590452353602875;
    cin >> a;
    cout << fixed << setprecision(a) << e << endl;

    return 0;
}

Здесь функция setprecision() используется вместе с манипулятором fixed, который говорит потоку, что нужно выводить число с фиксированной точкой.