c++ - G++ 浮点精度

标签 c++ gcc floating-point g++

我在 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/

相关文章:

c++ - 访问私有(private)嵌套类

c++ - 在 Code::Blocks 中加载库时出错

c - 堆栈中奇怪的指针位置

c++ - 无效的静态断言行为

c++ - 如何使用 C++ 在函数中添加 double ?

gcc - 为什么gcc -O3自动矢量分解?许多额外的指令看起来更糟

c - 如何合并共享库?

c++ - 不同编译器上 double 的不同行为

c - 从 csv 读取,strtod 无法读取带有数字的字符串

c++ - 将 Clang -fsyntax-only 模式与静态库一起使用?