如果用php的+-*/计算浮点数的时候,可能会遇到一些计算结果错误的问题,比如echo intval( 0.58*100 );会打印57,而不是58 这个其实是计算机底层二进制无法精确表示浮点数的一个bug,是跨语言的 可以用精度函数库解决问题   bcadd — 将两个高精度数字相加   bccomp — 比较两个高精度数字,返回-1, 0, 1   bcdiv — 将两个高精度数字相除   bcmod — 求高精度数字余数   bcmul — 将两个高精度数字相乘   bcpow — 求高精度数字乘方   bcpowmod — 求高精度数字乘方求模,数论里非常常用   bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”   bcsqrt — 求高精度数字平方根   bcsub — 将两个高精度数字相减 比较两个高精度数字 var_dump(bccomp($left=4.45, $right=5.54, 2)); // -1 两个高精度数相加 var_dump(bcadd($left=1.0321456, $right=0.0243456, 2)); //1.04 两个高精度数相减 var_dump(bcsub($left=1.0321456, $right=3.0123456, 2)); //-1.98 两个高精度数相除 var_dump(bcdiv($left=6, $right=5, 2)); //1.20 两个高精度数相乘 var_dump(bcmul($left=3.1415926, $right=2.4569874566, 2)); //7.71 设置bc函数的小数点位数 bcscale(3); var_dump(bcdiv('105', '6.55957')); // 16.007