php数学扩展bcmath
我在这里准备了一百口棺材,九十九口留给贪官,一口留给自己。
问题引出
看下面这个代码片段的结果
1 | $res1 = 0.07 * 100 == 7; |
结果竟然是 false
这个和电脑中存储小数的原理有关。大家都知道计算机只能存储0和1,我们日常生活习惯使用的是10进制的数据,像0.07这个小数在计算机中存储时会有精度损失.
问题解决
1 | $res2 = bcmul(0.07, 100) == 7; |
BC 数学 函数
● bcadd — 2个任意精度数字的加法计算
● bccomp — 比较两个任意精度的数字
● bcdiv — 2个任意精度的数字除法计算
● bcmod — 对一个任意精度数字取模
● bcmul — 2个任意精度数字乘法计算
● bcpow — 任意精度数字的乘方
● bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
● bcscale — 设置所有bc数学函数的默认小数点保留位数
● bcsqrt — 任意精度数字的二次方根
● bcsub — 2个任意精度数字的减法
实例
1 |
|