2015-12-17 44 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);