【目的】保留两位小数,若有第三位小数,则直接进1
【问题】 某些时候,php中的ceil函数会出现bug,比如说 $a = '4.90'; $b = ceil($a*100); print_r($b); 理论上输出应该是490,但实际运行的时候输出的是491。 【分析】 这是因为float类型(浮点小数)
很多普通的十进制小数在二进制下并不是有限位的小数,有限的数值位并不能精确地记录数字的值
所以你以为的4.90在 echo sprintf('%10.30f', 4.90*100); 的时候 看到的会是 490.000000000000056843418860808015 【解决方案】 $total_to_pay_money_x_1000 = (int)($total_to_pay_money * 1000); // 乘100,向上取整,再除以100变小数,以保证两位小数
$data['total_to_pay_money'] = ceil($total_to_pay_money_x_1000 / 10) / 100;
|
PHP ceil函数bug错误的解决方案
猜你喜欢
转载自blog.csdn.net/u013288190/article/details/79282390
今日推荐
周排行