PHP下的浮点运算不准的解决办法
生活随笔
收集整理的這篇文章主要介紹了
PHP下的浮点运算不准的解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先看一段代碼:
首先看一段代碼:<?php $a = 0.1; $b = 0.7; var_dump(($a + $b) == 0.8);打印出來的值居然為 boolean falsePHP手冊摘錄如下:
Warning?
浮點數精度
顯然簡單的十進制分數如同 0.1 或 0.7 不能在不丟失一點點精度的情況下轉換為內部二進制的格式。這就會造成混亂的結果:例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似 7.9999999999...。?
這和一個事實有關,那就是不可能精確的用有限位數表達某些十進制分數。例如,十進制的 1/3 變成了 0.3333333. . .。
?
解決辦法也不難,php提供了兩個函數bcadd()和bcsub().
<?php $a = 0.1; $b = 0.7; var_dump(bcadd($a,$b,2) == 0.8);//輸出為boolean true?當然還有一種辦法,就是將mysql的相應字段類型設置為更加精準的decimal類型。
轉載于:https://www.cnblogs.com/phper12580/p/10551932.html
總結
以上是生活随笔為你收集整理的PHP下的浮点运算不准的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# .NET Web API 如何自訂
- 下一篇: Python 网络服务相关 杂记