PHP 准确的比较两个浮点数是否相等的方法有:
一、方法一,相减后取绝对值小于一定位数的精度值则相等
$j = 0.000001;
$a1 = 1.000000001;
$a2 = 1.000000000;
if (abs($a1 - $a2 ) < $j) {
echo '精度为6位时相等';
}
else{
echo '精度为6位时不相等';
}
if (abs($a1 - $a2 ) < 0.0000000001) {
echo '精度为10位时相等';
}else{
echo '精度为10位时不相等';
}
二、方法二
function floatcmp($f1,$f2,$precision = 10)
{
$e = pow(10,$precision);
$i1 = intval($f1 * $e);
$i2 = intval($f2 * $e);
return ($i1 == $i2);
}
三、方法三 需要bcmath库支持
bccomp('1.00001', '1', 5)
返回0则相等,否则不相等