#php 浮動小数点減算は 0 に等しくありません
php 浮動小数点減算は 0 に等しくありません。 10 進数を 2 進数に変換すると精度が失われるため、bcadd() 関数を使用して浮動小数点数の加減算を行い、精度の変換を実行できます。 さらに、浮動小数点数が 0 に等しいかどうかを判断するには、$num == 0 ではなく、abs($d) < EPSを使用します。この EPS は非常に小さな値。
浮動小数点データとして、精度の一部が失われており、完全に正確であることはできません。したがって、浮動小数点数の結果が最後の桁まで正確であると決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。これは PHP の問題ではなく、コンピュータの内部浮動小数点数処理の問題であることに注意してください。 C や JAVA などの言語でも同じ問題が発生します。 浮動小数点数の計算の例は次のとおりです。$a = 0.2+0.7; $b = 0.9; var_dump($a == $b);
var_dump(bcadd(0.2,0.7,1) == 0.9); // 输出:bool(true)
PHP 中国語 Web サイトをご覧ください。
以上がPHP 浮動小数点減算が 0 に等しくないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。