PHP高精度函数
2019-04-29 本文已影响0人
xiaobobball
平时在做开发的时候,会遇到计算结果出错的问题,明明计算的方法正确,但结果不对。
比如0.58*100,得到的是57.99999999999999,而不是58
出现这种情况,并不是PHP的bug,而是二进制浮点计算的问题,各种语言都存在这个问题。
具体原理自行搜索,这里就不细讲,下面列出PHP这边的解决方案,使用高精度函数
bcadd — 将两个高精度数字相加
bccomp — 比较两个高精度数字,返回-1, 0, 1
bcdiv — 将两个高精度数字相除
bcmod — 求高精度数字余数
bcmul — 将两个高精度数字相乘
bcpow — 求高精度数字乘方
bcpowmod — 求高精度数字乘方求模,数论里非常常用
bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
bcsqrt — 求高精度数字平方根
bcsub — 将两个高精度数字相减