我在 PHP 中有以下代码,我试图通过将变量类型转换为整数来克服所述问题,并通过在比较之前将所有值乘以 100 来避免浮点错误,以便删除 2 个小数位。
但是,以下代码仍将表达式计算为 true,并将文本着色为红色而不是绿色,但是当我回显 $eq_left 和 $eq_right 的两个值时,它们是相同的,没有小数点。
这是代码:
$eq_left = (int) ($eq_bal_CurrentAssets*100) + ($eq_bal_NonCurrentAssets*100) ;
$eq_right = (int) ($eq_bal_Liabilities*100) + ($eq_bal_Taxation*100) + ($eq_bal_Equity*100) ;
if ($eq_left !== $eq_right) {
$color = 'red';
$diff = abs($eq_left - $eq_right);
} else {
$color = 'green';
}
echo "<div style=\"color: $color; font-weight:bold;\">\n";
echo " " . number_format(($eq_left/100),2,".",",") . " = " . number_format(($eq_right/100),2,".",",") . "<br />\n";
if ($diff) {
echo " Difference = " . number_format(($diff/100),2,".",",") . "\n";
}
echo "</div>\n";
echo $eq_left . " | " . $eq_right
有任何想法吗?