如果我使用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