PHP round() bug with round(908.5449, 2, PHP_ROUND_HALF_UP) =

  • 本文关键字:PHP round ROUND UP HALF 5449 bug with php
  • 更新时间 :
  • 英文 :


我目前正在PHP中投资一个舍入问题。我已经在这里测试了https://3v4l.org/NpRPp,它似乎是一样的,因为从来没有。

但这是正确的行为吗?因为我预料到以下情况

echo round(908.5449, 2, PHP_ROUND_HALF_UP); // should be 908.55, but returns actually 908.54

有人能告诉如果这种行为是有意的,如果是,如何解决它正确的每一个可能的浮点数?

编辑:多亏了答案,这种行为是正确的,但我预期的结果是错误的。我在程序中的原始数字是908.55,由于在DB中的存储和浮点精度问题,在程序链的某个地方变成了908.5449999999994。所以我希望它再次是908.55,这与round()的常规使用不起作用。

工作正常。

的输出
echo round(908.5449, 2, PHP_ROUND_HALF_UP);

应为908.54。四舍五入到两位小数,所以余数,四舍五入后是0.0049。这小于0.005,也就是一半,所以它被四舍五入。

最新更新