Given two double values d1, d2, why isn’t it reliable to test their equality using:

Description:

d1 == d2

Solution:

Because of Double.NaN (literally: “Not a Number”).

This code:

final double d1 = Double.NaN;
final double d2 = Double.NaN;

System.out.println(d1 == d2);

will print false.

The most accurate way to tell whether two double values are equal to one another is to use Double.compare() and test against 0, as in:

System.out.println(Double.compare(d1, d2) == 0);
0 answers