c++ - 如何在 C++ 中保持 Double 的精度

标签 c++ floating-point rounding

main()
{
   double d1 = 1234.1;
   cout << "d1 = 1234.1 --> " << d1 << endl;
   double d2 = 1234.099999;
   cout << "d2 = 1234.099999 --> " << d2 << endl;
}

输出:

d1 = 1234.1 --> 1234.1
d2 = 1234.099999 --> 1234.1

我实际上想打印 d2 的确切值,即 1234.099999 但结果不一样。

请建议我如何获得准确的值。

最佳答案

你想要cout.precision http://www.cplusplus.com/reference/iostream/ios_base/precision/

另请注意,d2 不完全是 1234.099999,d1 也不完全是 1234.1

float 会引入舍入误差,这就是为什么它们默认舍入到较少的位置,以尝试显示有意义的结果。

关于c++ - 如何在 C++ 中保持 Double 的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191018/

相关文章:

c++ - 将 32 位 float 打包成 30 位 (c++)

python - 如何计算游戏板上孔的位置?

c++ - 是否可以指定一个空的 std::vector 作为默认参数?

c++ - 作为仿函数模板的模板参数

c++ - 在 C++08 中初始化对象以作为参数传递的首选语法是什么?

assembly - 浮点加法汇编算法

c++ - 无法解释的类构造函数调用生成 "matching function error"

floating-point - Enum.Sum 和我的自定义求和函数之间的 Elixir 意外浮点结果差异

python - 在 python 中获取 Decimal 的 Ceil()?

firefox - FireFox 3.6.15+ 中图像的圆 Angular 仍然不起作用?