您当前的位置: 首页 >  php
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PHP ceil函数bug错误的解决方案

软件工程小施同学 发布时间:2018-02-07 17:23:45 ,浏览量:0

【目的】保留两位小数,若有第三位小数,则直接进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;
关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.0518s