PHP计算数据的浮点精度问题

此文章发布于23个月前,部分信息可能已经过时,请自行斟酌确认

PHP计算数据的浮点精度问题

我们在使用PHP的 + , - , * , / 计算浮点数据时,经常会遇到计算结果错误的问题,举例如下:

<?php

    echo intval(0.58 * 100); //输出57

?>

解决办法

<?php

    echo bcmul(0.58, 100); //输出58

?>

PHP为了处理此问题提供了BC高精度函数库
这里给大家都介绍一下这些PHP的BC高精度函数,方便记录大家使用!

  • bcadd — 将两个高精度数字相加
  • bcsub — 将两个高精度数字相减
  • bcmul — 将两个高精度数字相乘
  • bcdiv — 将两个高精度数字相除
  • bccomp — 比较两个高精度数字,返回-1, 0, 1
  • bcmod — 求高精度数字余数
  • bcpow — 求高精度数字乘方
  • bcpowmod — 求高精度数字乘方求模,数论里非常常用
  • bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
  • bcsqrt — 求高精度数字平方根
最后修改:2020 年 02 月 26 日 02 : 30 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论