如果我使用C++代码:C++双待很长很长
long long d = 999999998.9999999994;
cout<<d;
我得到的输出:999999999
(四舍五入)
但是这段代码的输出:
long long d = 999999998.9999994994;
cout<<d;
是999999998
(四舍五入)
它是否与精度有关。有什么办法可以改变精确度吗? floor()
函数也给出相同的输出。
我也注意到,如果我指定值8.9999994994
或8.9999999994
到d
(上面的变量)。输出是8
。
您可以明确添加0.5,并将long double强制转换为double。 – 2014-10-04 19:42:42
C++ 11支持?用户定义的文字可以提供帮助。 – Yakk 2014-10-04 20:52:15
@OleksandrVerhun你可以做到这一点,但如果你的目标是将浮点数四舍五入到最接近的整数,你不应该这样做。 http://blog.frama-c.com/index.php?post/2013/05/02/nearbyintf1 – 2014-10-04 21:03:11