Установка точности std :: cout во всей области файла - C ++ iomanip

Я делаю некоторые вычисления, и результаты сохраняются в файл. Мне нужно вывести очень точные результаты, близкие к точности переменной double, и для этого я использую iomanip setprecision (int). Проблема в том, что я должен помещать setprecision везде в выводе, например:

func1() {
cout<<setprecision(12)<<value;
cout<<setprecision(10)<<value2;
}
func2() {
cout<<setprecision(17)<<value4;
cout<<setprecision(3)<<value42;
}

А это очень громоздко. Есть ли способ установить более общий модификатор cout fixed?

Спасибо


person Ivan    schedule 05.05.2010    source источник


Ответы (2)


Вы ищете cout.precision?

person nc3b    schedule 05.05.2010

В C ++ 20 вы сможете использовать std::format, который по умолчанию дает вам кратчайшее десятичное представление, поэтому вы не потеряете точность, даже если не укажете его вручную. Например:

std::cout << std::format("{}", M_PI);

отпечатки

3.141592653589793

Если вам нужна фиксированная точность, вы можете сохранить ее в переменной и повторно использовать в нескольких местах:

int precision = 10;
std::cout << std::format("{:.{}}", value, precision);
person vitaut    schedule 05.03.2021