精度を維持した浮動小数点値の比較
浮動小数点の比較では、精度の低下により問題が発生します。 == を使用して double または float を単純に比較することは信頼できません。
イプシロンベースの比較
1 つのアプローチでは、精度の損失を考慮してイプシロン (ε) しきい値を使用します。
bool CompareDoubles2(double A, double B) { double diff = A - B; return (diff < EPSILON) && (-diff < EPSILON); }
ただし、このアプローチは次のとおりです。
コンテキスト依存の考慮事項
比較方法の選択は、コンテキストと期待値によって異なります。次の潜在的な落とし穴を考慮してください:
Standard Epsilon
std::numeric_limits 整数演算の結果 整数値を保持するために double を使用すると、正しい値が得られる可能性があります。算術では、整数の範囲外の分数や値は避けられます。たとえば、4.0/2.0 は 1.0 1.0 と等しくなります。 以上が精度の損失を考慮しながら浮動小数点値を正確に比較するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。