我在 C++ 程序中有这些行,
auto f = log (FLT_MAX / 4);
printf("%e", f);
cout << f;
printf
结果是 8.733654e+1,但是 cout
给出了 87.3365。我检查了 32 位的十六进制值,它们分别是 0x3f5f94e0 和 0x3f5f94d9,这意味着,似乎有足够的精度来准确表示该值。
你知道为什么 cout
会截断那个浮点值吗?
最佳答案
Do you know why cout is truncating that floating point value?
因为 C++ 流的默认精度设置为 6。
您可以使用 std::setprecision
更改精度.
关于c++ - G++ 浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747323/