【问题标题】:How to maintain Double's precision in C++如何在 C++ 中保持 Double 的精度
【发布时间】:2012-05-10 21:07:29
【问题描述】:
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,但不一样。

请建议我怎样才能得到确切的值。

【问题讨论】:

标签: c++ floating-point rounding


【解决方案1】:

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

还要注意,d2 不完全是 1234.099999,d1 也不完全是 1234.1

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

【讨论】:

  • 感谢您的回复。实际上我需要将值(1234.099999)存储在字符缓冲区中,但是我在缓冲区中得到(1234.1),这给我带来了问题。如何在不四舍五入的情况下检索确切值。
  • 所以你想把它存储为一个字符串而不是一个双精度数?这可以通过std::string d2 = "1234.099999";? 之类的方式来完成
猜你喜欢
  • 2010-09-24
  • 2011-02-11
  • 2018-04-21
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
相关资源
最近更新 更多