当小数位较长时,PHP 轮次显示不正确的数字

标签 php rounding

<分区>

采用以下代码:

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/

相关文章:

javascript - 在javascript中对数字进行四舍五入

php - 插入或更新如果存在行

javascript - 当用户单击浏览器后退按钮时提交表单

php - 非常奇怪的数据库插入/选择 phpmyadmin

php - 多次上传和调整 class.upload.php

rounding - 从 IEEE-754 转换为具有最接近舍入的定点

java - 如何解决这个四舍五入的要求呢?

php - 如何根据 Laravel 中的用户角色管理 Controller 方法?

Python 3.x 四舍五入一半

python - 将字典中的值四舍五入到 python 中最接近的 5?