我正在进行一些计算,结果将保存在文件中。我必须输出非常精确的结果,接近双变量的精度,并且我正在使用iomanip setprecision(int)。问题是我必须在输出中的任何地方放置setprecision,如:
func1() {
cout<<setprecision(12)<<value;
cout<<setprecision(10)<<value2;
}
func2() {
cout<<setprecision(17)<<value4;
cout<<setprecision(3)<<value42;
}
这非常麻烦。有没有办法更一般地设置cout固定修饰符?
由于
答案 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);