ホームページ > Java > &#&チュートリアル > Java で浮動小数点を比較するのに == を使用してはいけないのはなぜですか?

Java で浮動小数点を比較するのに == を使用してはいけないのはなぜですか?

Patricia Arquette
リリース: 2024-12-18 06:54:14
オリジナル
279 人が閲覧しました

Why Shouldn't You Use == to Compare Floats in Java?

質問: Java で浮動小数点比較に == を使用する場合の落とし穴

Java では浮動小数点数の等価演算子として存在しますが、 、== には、「JAVA0078 浮動小数点値が比較されました」のような静的解析の警告が示すように、浮動小数点数を比較する場合には制限があります。 with ==.

答え: 精度の問題

浮動小数点数は近似値として保存されるため、演算中に丸め誤差が発生する可能性があります。したがって、== を使用して 2 つの浮動小数点を比較すると、偽陰性または偽陽性が生じる可能性があります。

正しいアプローチ: 許容マージン

浮動小数点を「等しい」かどうか比較するための適切なアプローチそれらの間の絶対差が事前に定義された許容値より小さいかどうかをテストすることが含まれます。これにより、比較で丸め誤差が考慮され、目的の精度と一致することが保証されます。

if(Math.abs(sectionID - currentSectionID) < epsilon)
ログイン後にコピー

イプシロン値の選択

適切なイプシロン値の選択は、目的の精度に応じて異なります。正確に比較するには、より小さなイプシロン値が使用されますが、より大きなイプシロン値ではより広い誤差範囲が許容されます。

以上がJava で浮動小数点を比較するのに == を使用してはいけないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート