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

时间:2011-03-04 07:40:20

标签: 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,但不会相同。

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

1 个答案:

答案 0 :(得分:7)

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

另请注意,d2不是1234.099999,而d1不是1234.1

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