質問: Java で浮動小数点比較に == を使用する場合の落とし穴
Java では浮動小数点数の等価演算子として存在しますが、 、== には、「JAVA0078 浮動小数点値との比較==.
答え: 精度の問題
浮動小数点数は近似値として保存されるため、演算中に丸め誤差が発生する可能性があります。したがって、== を使用して 2 つの浮動小数点を比較すると、偽陰性または偽陽性が生じる可能性があります。
正しいアプローチ: 許容マージン
浮動小数点を「等しい」かどうか比較するための適切なアプローチそれらの間の絶対差が事前に定義された許容値より小さいかどうかをテストすることが含まれます。これにより、比較で丸め誤差が考慮され、意図した精度と一致することが保証されます:
if(Math.abs(sectionID - currentSectionID)Epsilon Value Selection
適切なイプシロン値の選択は、必要な精度によって異なります。正確に比較するには、より小さいイプシロン値が使用されますが、より大きなイプシロン値では、より広い誤差範囲が許容されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3