1. 程式人生 > >php浮點數精確運算

php浮點數精確運算

永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函式或者 gmp 函式

$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

打印出來的值居然為 boolean false

那麼上面的算式我們應該改寫為

$a = 0.1;
$b = 0.7;
var_dump(bcadd($a,$b,2) == 0.8);

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