php有意思的現象,應該是很多編程語言都會有這樣的現象。這個是因為計算機的本身對浮點數識別的問題.....下面通過代碼給大家展示下:
$f = 0.58;
var_dump(intval($f * 100 *100)); //結果5799
var_dump((float)($f * 100 *100)); //結果5800
echo (int)((0.1+0.7)*10); //結果7
echo (float)((0.1+0.7)*10); //結果8
<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);
//打印出來的值居然為 boolean false
<?php
$a = 0.1;
$b = 0.7;
var_dump(bcadd($a,$b,2) == 0.8);// bool true
再次需注意的是在浮點數計算的時候,切記不要把浮點數轉換成整形,否則會出現不可能預估的錯誤。
以上代碼就是PHP之浮點數計算比較以及取整數不準確的解決辦法。
新聞熱點
疑難解答