我目前正在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,也就是一半,所以它被四舍五入。