在日常处理小数相加相乘的时候,发现函数ceil()计算的结果比正确值多了1,比如下面:
$a = 7960.00;
$b = 0.08;
echo ceil($a * $b * 10); //结果显示的6369,实际应该是6368。
导致的具体原因可以查PHP高精度数字二进制的相关资料,解决方案两个。
- 用bcmul,bcadd等函数替代相乘和相加。
- 增加一个round解决。如以上变更为ceil(round($a * $b * 10, 1));
文章评分9次,平均分0.8:★☆☆☆☆
在日常处理小数相加相乘的时候,发现函数ceil()计算的结果比正确值多了1,比如下面:
$a = 7960.00;
$b = 0.08;
echo ceil($a * $b * 10); //结果显示的6369,实际应该是6368。
导致的具体原因可以查PHP高精度数字二进制的相关资料,解决方案两个。
本文原始地址:https://www.tiandiyoyo.com/2021/11/php_ceil_bug/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com