<分区>
采用以下代码:
echo round(1215.49999);
我得到的答案是 1215
,这就是我想要的。
但是,当你这样写的时候:
echo round(1215.499999999999999);
我得到的答案是 1216
。
这有什么特别的原因吗?在这两种情况下,我都希望以 1215
结束。
<分区>
采用以下代码:
echo round(1215.49999);
我得到的答案是 1215
,这就是我想要的。
但是,当你这样写的时候:
echo round(1215.499999999999999);
我得到的答案是 1216
。
这有什么特别的原因吗?在这两种情况下,我都希望以 1215
结束。
最佳答案
如果输入 1215.499999999999999 从 php 解释为 float ,则一切都来不及舍入。这个数字与 1215.5 相同
一个测试:
var_dump(1215.499999999999999 === 1215.5); //bool(true)
如果输入要四舍五入,必须使用bcmat,输入为字符串。
$input = '1215.499999999999999';
echo bcadd($input,0.5,0); //1215
$input = '1215.5000000000000000';
echo bcadd($input,0.5,0); //1216
关于当小数位较长时,PHP 轮次显示不正确的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855998/