→ dinos:浮點數精度問題,看要不要用bcmath,或是round再除小數位數 06/03 17:06
推 LPH66:或者乘完 100 再做 round (當然精度要調整一下) 06/03 18:48
→ LPH66:啊, 一樓有提了XD 不過 php 的 round 可以指定精度所以不必 06/03 18:49
→ LPH66:先拉到整數位再 round 再除 06/03 18:49
謝謝 dinos 和 LPH66 的回覆
我發現只有在那個php檔裡,會出現這個問題
我開一個新檔,單純去測試運算部分,就會正常 @@"
例如:同樣是以下的程式碼,在該php裡有問題,開新的就沒問題
$a = 259;
$b = 244;
$c = $b/$a;
echo $c."<br />";
echo round($c, 4)."<br />";
echo (round($c, 4)*100)."<br />";
※ 編輯: FT6034 (118.168.199.55), 06/04/2014 08:43:47
推 LPH66:這有點微妙, 你要不要試試乘完再 round? 06/04 16:34
→ LPH66:原來是 round($x, 0.0001)*100 則改成 round($x*100, 0.01) 06/04 16:36
→ LPH66:之所以微妙的原因是因為該 php 裡的值可能經過多重運算而來 06/04 16:37
→ LPH66:因此不一定正好是你認為的那個數值 06/04 16:37
推 hwChang:IEEE 754, |4-2.7.0.3| == 1 06/09 10:42
→ hwChang:浮點數運算時,做判斷時要注意 :) 06/09 10:43
→ hwChang:如同LPH說的,不一定正好是你認為的那個數值。 06/09 10:44
→ hwChang:再試試 |3-2.7-0.3| == 0,可觀察運算後的值。 06/09 10:45