PHP に次のコードがあります。ここでは、変数を整数に型キャストし、比較前にすべての値を 100 倍して浮動小数点エラーを回避して、小数点以下 2 桁を削除することで、前述の問題を解決しようとしました。
ただし、次のコードは依然として式を true と評価し、テキストを緑ではなく赤で色付けしますが、$eq_left と $eq_right の 2 つの値をエコーすると、小数点がなく同一です。
コードは次のとおりです。
$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
何か案は?