1. 当前位置:首页>百科>PHP浮点数计算bug

PHP浮点数计算bug

在做php浮点数计算是遇到一个特殊的数字问题,如下式

(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 两个任意精度的数比较

echo bccomp('1', '2');                 // -1echo bccomp('1.00001', '1', 3);        // 0  第三个参数为比较的小数位数echo bccomp('1.00001', '1', 5);        // 1

详细函数列表以及用法请参见php官方文档手册


本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.5amiao.com/baike/1103.html

联系我们

在线咨询:点击这里给我发消息

QQ号:1045784018

工作日:10:00-17:00,节假日休息