圆形函数在php版本5.1.6中无法正常工作

时间:2015-12-17 05:17:05

标签: php

1)

$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。 在第一和第三,例如,​​唯一的区别是值的排列。

请建议为什么第3个例如给出失败

3 个答案:

答案 0 :(得分: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);
    
  4. 它可能会帮助您解决问题,

答案 1 :(得分:0)

无法访问此版本的PHP。对于这种情况的最佳解决方案是升级到一些较新版本 - 毕竟PHP 7刚刚发布。

如果无法升级,可以尝试以下解决方法之一: 铸造(浮动)总和中的每个数字
转换为(浮动)结果 - (float) $c
转换为(字符串)然后转换为(浮动)结果 - (float)(string) $c

不知道是否有任何帮助,但如果您只需要一个解决方法,值得一试。不幸的是,除了猜测这个问题可能与PHP处理变量和数字的一些基本方法有关外,我无法解释为什么在你的情况下舍入不起作用。

这里有关于PHP Bugs Tracker的类似问题:https://bugs.php.net/bug.php?id=36008

答案 2 :(得分:0)

此问题的可能解决方案可以是使用round和number_format组合。

Ex:$ amount = round(number_format($ amount,8,“。”,“”),2);