關於 float的四舍五入問題


3.55 can't be represented exactly in floating point. The internal value is something like 3.54999999999, which rounds to 3.5 

首先要明白浮點數在計算機中都絕大多數是近似值。其實C++對浮點數是自動四舍五入的,而且是非常嚴格地下一位為5則入,小於5則不入。這在double型時一般是沒有問題的。在float型時,因精度低,內存中的近似值可能剛好使決定四舍五入的那一位的5不足額,造成不能四舍五入。例如float x=3.1415;,實際上內存中的二進制換算過來是3.14149999999999...;,這樣取3位小數后就成了3.141而不是3.142了;如果換成double型,立馬就變成3.142了。可以這樣解決就保險了:float型的有效位是6位左右,給要輸出的變量加一個1E-6,四舍五入的問題就解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM