2015-12-17 45 views
0

1)Round函數不是在PHP版本5.1.6

$b = 468.7+468.7+468.7+468.7+468.7+468.7+468.7+175+175+175+175+175+175+175+175+175+175+175+175+175+175+689.8+689.8+0+0+0; 

echo "<br><======>".$b;//gives 7110.5 
echo "<br><======>".round($b);//gives 7111 

2)

$k = 7110.5; 

echo "<br><======>".$k; // gives 7110.5 
echo "<br><======>".round($k);//gives 7111 

3)

$c = 175+468.7+175+689.8+175+468.7+175+468.7+175+689.8+175+175+468.7+175+175+175+468.7+175+175+175+468.7+175+468.7; 

echo "<br><======>".$c; // gives 7110.5 
echo "<br><======>".round($c); // gives 7110 

,如果你在第3檢查如圍捕工作正常值是不正確的,它必須是7111. 在第1和第3例中,唯一的區別是值的排列。

請說明爲什麼給出的第三個如未能

+0

檢查5.6工作正常,可能與5.1有些問題 –

回答

0

不要訪問這個版本的PHP。而針對這種情況的最佳解決方案是升級到更新的版本 - 畢竟PHP 7剛剛發佈。

如果不能升級,你可以嘗試這裏的解決方法之一: 鑄造到(浮動)每個在你的總和
號鑄造到(浮點)結果 - (float) $c
鑄造到(串),然後到(float)的結果 - (float)(string) $c

不知道它是否有幫助,但值得一試,如果你只需要一個解決方法。不幸的是,除了猜測這個問題可能與PHP處理變量和數字的一些底層方式有關,我無法解釋爲什麼舍入在你的案例中不起作用。

有類似的問題,對PHP錯誤跟蹤此一提:https://bugs.php.net/bug.php?id=36008

1
  1. 建議你應該使用PHP

  2. 的較新版本實際上是在PHP 5.1中的一個錯誤,這是後來修復。 https://bugs.php.net/bug.php?id=34599

  3. 還是要在5.1

    round($c, 0, PHP_ROUND_HALF_UP); 
    

它可能爲你工作來解決問題的確切結果,

0

對於這個問題可能的解決方法可以是使用圓形和number_format組合。

例如:$ amount = round(number_format($ amount,8,「。」,「」),2);