3

我正在做一些计算,结果被保存在一个文件中。我必须输出非常精确的结果,接近双变量的精度,为此我使用 iomanip setprecision(int)。问题是我必须将 setprecision 放在输出中的任何位置,如下所示:

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

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

谢谢

4

2 回答 2

7

您在寻找cout.precision吗?

于 2010-05-05T16:16:50.603 回答
1

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

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

印刷

3.141592653589793

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

int precision = 10;
std::cout << std::format("{:.{}}", value, precision);
于 2021-03-05T00:25:16.693 回答