IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ceil函数由于小数精度导致的结果加1的问题

    tiandi发表于 2021-11-12 01:55:31
    love 0

    在日常处理小数相加相乘的时候,发现函数ceil()计算的结果比正确值多了1,比如下面:

    $a = 7960.00;
    $b = 0.08;

    echo ceil($a * $b * 10); //结果显示的6369,实际应该是6368。

    导致的具体原因可以查PHP高精度数字二进制的相关资料,解决方案两个。

    1. 用bcmul,bcadd等函数替代相乘和相加。
    2. 增加一个round解决。如以上变更为ceil(round($a * $b * 10, 1));

    文章评分2次,平均分3.0:★★★☆☆


沪ICP备19023445号-2号
友情链接