(int)(0.29 100) = ?
上式期望值是29,但是通过php打算得到的结果却是28。
这是由于php的浮点数打算是禁绝确的,0.29 100 =28.9999999...再进行逼迫类型转换成int型时就得到了28。
那么如何办理这个问题呢?

PHP供应了bc系列数学函数,可以进行任意精度的打算。以上式为例:
注:bc数学函数的操作数参数为字符串类型
(int)bcmul("0.29", "100") = 29
bcadd 两个任意精度的数相加
bcsub 两个任意精度的数相减
bccomp 两个任意精度的数比较
echobccomp('1','2'); //-1echobccomp('1.00001','1',3); //0 第三个参数为比较的小数位数echobccomp('1.00001','1',5); //1
详细函数列表以及用法请拜会php官方文档手册
https://www.php.net/manual/zh/ref.bc.php