可能性の重複:
How to resolve a Java Rounding Double issueJavaの2つの倍精度値を比較するには?
、Javaの2つのdouble値の単純な比較は、いくつかの問題を作成します。 Javaの次の単純なコードスニペットを考えてみましょう。
package doublecomparision;
final public class DoubleComparision
{
public static void main(String[] args)
{
double a = 1.000001;
double b = 0.000001;
System.out.println("\n"+((a-b)==1.0));
}
}
上記のコードは、true
を返すように見える表現((a-b)==1.0)
の評価が、それはしません。この式の評価が1.0
と等しくないため、実際にはであると予想された0.9999999999999999
であるため、false
が返されます。したがって、条件はboolean false
と評価されます。このような状況を克服するための最善の提案方法は何ですか?
これは、倍数と浮動小数点はすべての数値を表すことができないためです。彼らは実際に近似値を使って値を表しています。 – onit