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


d1 == d2


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 and test against 0, as in:

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