php有意思的現象,應該是不少編程語言都會有這樣的現象。這個是由於計算機的自己對浮點數識別的問題.....php
- $f = 0.58;
- var_dump(intval($f * 100 *100));
- var_dump((float)($f * 100 *100));
- echo (int)((0.1+0.7)*10);
- echo (float)((0.1+0.7)*10);
- <?php
- $a = 0.1;
- $b = 0.7;
- var_dump(($a + $b) == 0.8);
- <?php
- $a = 0.1;
- $b = 0.7;
- var_dump(bcadd($a,$b,2) == 0.8);
在浮點數計算的時候,切記不要把浮點數轉換成整形,不然會出現不可能預估的錯誤。編程
因此永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。編程語言