$money=271.28; echo $money=floor($money*pow(10,2))/100我驚訝的發現輸出的竟然不是271.28而是271.27!
後來查了很多資料,在php官網上看到了這麼一點:
所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。
後來我印了上面運算的結果:
printf("%.12f", $money*pow(10,2));發現結果是:27127.999999999996
原來是精確度問題。暫時還沒找到統一的解決方法。我只有在程式碼邏輯中加入if ($money - round ( $money, 2 ) < 0.00001) {
}else{
$money=floor($money*pow(10,2))/100;
}
來避免已經精確了兩位數的資料再處理。 如果有人知道另一種實現我上述功能(精確到小數點後兩位無論第三位是什麼都捨棄)的方法請教我。