爲什麼當我用乘法c + +浮動四捨五入(錯誤?)
float a= 1.0500000f;
float b= a*100.0f;
爲什麼b爲104.99999而不是105.0?
,當我
int f= (int)b;
f爲104
爲什麼當我用乘法c + +浮動四捨五入(錯誤?)
float a= 1.0500000f;
float b= a*100.0f;
爲什麼b爲104.99999而不是105.0?
,當我
int f= (int)b;
f爲104
浮點數是不是無限精確 - the wikipedia page on Float numbers是相當有趣的閱讀。
關於第二個問題:(int)b
會截斷逗號後面出現的任何內容。這意味着,在你的情況下,104.99999
變成104
。所以,當你創建一個四捨五入錯誤,然後把它轉換爲一個整數時,你的確有冒險獲得一個較低的數字。
[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –
請參見[here](http://docs.oracle.com/ cd/E19957-01/806-3568/ncg_goldberg.html)爲你需要知道的一切。至於senond部分,這是由於截斷。 – Phylogenesis
在這個網站上有很多關於這個「問題」的問題。閱讀更多http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html –