2016-04-07 13 views
1

でフロート(プリミティブ型)を比較する上記の方法は、浮動小数点数を比較するか、に失敗する権利でありますその他の場合。 .equalsのような方法や他の方法。は私が==演算子</p> <pre><code>String sFloat = "0.0"; float n = Float.parseFloat(sFloat); System.out.println("n--"+n); if(n == 0){ System.out.println("inside if"); } else{ System.out.println("inside else"); } </code></pre> <p>でフロートを比較していたのコードを持っている==演算子

フロートは、私は、ラッパーフロートを使用したくない

フロートない原始的な変数です。私は基本的な比較だけをしたいです

+0

この質問は一致しています:[何がJavaの浮動小数点数を比較するために使用すると間違っている](http://stackoverflow.com/questions/1088216/whats-wrong-with-using-to-compare-floats-in-java) 。その答えからの引用_浮動小数点の値は少し離れている可能性があるので、正確に等しいと報告することはできません。たとえば、浮動小数点を「6.1」に設定してからもう一度印刷すると、「6.099999904632568359375」のような報告された値が得られます。これは、浮動小数点演算の基本になります。したがって、等価を使用して比較するのではなく、範囲内で比較することをお奨めします。 – uniknow

+0

これは既に述べています。「浮動小数点は浮動小数点ではありません」という理由は重複していますか? – SarthAk

答えて

2

プリミティブ変数は、参照型変数にのみ使用されるため、equals()メソッドではなく、==演算子と比較されます。

1
float f1 = 22.30f; 
float f2 = 88.67f; 
int retval = Float.compare(f1, f2); 

if(retval > 0) { 
    System.out.println("f1 is greater than f2"); 
} 
else if(retval < 0) { 
    System.out.println("f1 is less than f2"); 
} 
else { 
    System.out.println("f1 is equal to f2"); 
} 

これはフロート値を比較する最も良い方法です。

+1

-0.0を0.0と比較したときに予期しない機能がいくつかあると思います。もちろん、それは達成したい具体的な比較に依存します。 –

1

あなたが言ったように、floatは基本的なバリエーションです。したがって、==演算子を使用して浮動小数点数を比較することは安全です。 さらに、float型のクラスラッパーであるFloatを使用する場合は、equals()メソッドプロバイダーを使用する必要があります。