为什么当值相同时<小于条件命中?

  • 本文关键字:小于 条件 php floating-point
  • 更新时间 :
  • 英文 :

dump($available_funds);
dump($meal_price);
if ($available_funds < $meal_price) {
dd('hit');
return false;
}

$available_funds$meal_price都是设置为2.78的'double'值

当值相同时,为什么会命中if语句?

我已经尝试(float)变量和floatval()来尝试和更新类型,看看这是否会解决条件,但没有运气。

问题可能是由于double数据类型的精度。双精度值最多可以有15位十进制数字的精度,但在某些情况下,实际存储的值可能与声明的类型具有不同的精度。这在比较双精度值时可能会导致问题,因为即使这些值看起来相同,它们也可能不完全相等。

这个问题的一个解决方案是在比较它们之前使用round()函数将值四舍五入到特定的小数位数。例如,可以使用以下代码比较精度为两位小数的值:

$available_funds = round($available_funds, 2);
$meal_price = round($meal_price, 2);
if ($available_funds < $meal_price) {
dd('hit');
return false;
}

相关内容

最新更新