1. ホーム
  2. java

[解決済み] Javaで2つのdouble値を比較する方法は?

2022-03-06 17:15:43

質問

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) が、そうなっていない。それは false なぜなら、この式の評価は 0.9999999999999999 であることが予想されましたが、実際には 1.0 とは一致しません。 1.0 したがって、この条件はブール値として評価されます。 false . このような状況を打開するための最良の方法、および推奨される方法は何でしょうか?

解決方法は?

基本的に厳密な比較はしないほうがいい、こんな感じ。

double a = 1.000001;
double b = 0.000001;
double c = a-b;
if (Math.abs(c-1.0) <= 0.000001) {...}