關於浮點型誤差的解決方法


根據結果說明,作為浮點型數據,其精度已經損失了一部分,達不到完全精確。所以永遠不要相信浮點數結果精確到了最后一位,也永遠不要比較兩個浮點數是否相等。
需要說明的是,這不是 PHP 的 問題,而是計算機內部處理浮點數的問題!在 C、JAVA 等語言中也會遇到同樣的問題。

解決方法:需要將其控制在我們需要的精度范圍內再行比較。

比如 bc 函數:

bcadd — 將兩個高精度數字相加 
bccomp — 比較兩個高精度數字,返回-1, 0, 1 
bcdiv — 將兩個高精度數字相除 
bcmod — 求高精度數字余數 
bcmul — 將兩個高精度數字相乘 
bcpow — 求高精度數字乘方 
bcpowmod — 求高精度數字乘方求模,數論里非常常用 
bcscale — 配置默認小數點位數,相當於就是Linux bc中的”scale=” 
bcsqrt — 求高精度數字平方根 
bcsub — 將兩個高精度數字相減


免責聲明!

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



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