log(1000, 100) does not return 1.5



当我运行此代码时:

$value = log(1000, 100);
echo $value;
if ($value == 1.5) {
echo 'Equal';
} else {
echo 'Not Equal';
}

我看到1.5Not Equal。这很奇怪,因为log(1000, 100)确实返回1.5,但它与if语句不匹配。

PHP为什么要这样做?

如果您var_dump您的$value,您将看到结果是float(1.4999999999999998),而这不等于1.5,您需要使用类似于:的舍入

$value = round(log(1000, 100), 1);
if ($value == 1.5) {
echo 'Equal';
} else {
echo 'Not Equal';
}

在这里您可以看到结果。

参考:

  • 圆形
  • 请参阅浮点精度

最新更新