Округление до N знаков после запятой в C++
Решаю задачу на округление до 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;
}
Ответы (1 шт):
Автор решения: arnold
→ Ссылка
Для более точного округления до 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, который говорит потоку, что нужно выводить число с фиксированной точкой.