浮動小数点数に関するPHPドキュメントは、それらを比較する方法を示しています
上記の警告で述べたように、浮動小数点値が内部的に表される方法が原因で、浮動小数点値が等しいかどうかをテストすることには問題があります。ただし、これらの制限を回避する浮動小数点値を比較する方法があります。
浮動小数点値が等しいかどうかをテストするには、丸めによる相対誤差の上限を使用します。この値は、マシンイプシロンまたはユニットラウンドオフと呼ばれ、計算で許容される最小の差です。
<?php
// $a and $b are equal to 5 digits of precision.
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;
if(abs($a-$b) < $epsilon) {
echo "true";
}
?>
あなたの例に適用:
$c = $b - $a;
$epsilon = 0.00001;
if (abs($a-$b-0.01) < $epsilon) {
echo "Not ok";
} else {
echo "Ok";
}
出力OK