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;
}