在整个文件范围内设置std :: cout的精度 - C ++ iomanip

时间:2010-05-05 16:12:10

标签: c++ cout iomanip

我正在进行一些计算,结果将保存在文件中。我必须输出非常精确的结果,接近双变量的精度,并且我正在使用iomanip setprecision(int)。问题是我必须在输出中的任何地方放置setprecision,如:

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

这非常麻烦。有没有办法更一般地设置cout固定修饰符?

由于

2 个答案:

答案 0 :(得分:5)

您在寻找cout.precision吗?

答案 1 :(得分:1)

在 C++20 中,您将能够使用 std::format,它默认为您提供最短的十进制表示,因此即使您不手动指定它也不会丢失精度。例如:

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

印刷品

3.141592653589793

如果你需要一个固定的精度,你可以将它存储在一个变量中并在多个地方重复使用:

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