double の値が NaN かどうかは == 演算子ではチェックできない
double の変数が NaN かどうかは、Double#isNaN() でチェックする。
double の変数と Double.NaN を == で比較したら、常にfalseになってしまう。
double d = Double.NaN; if (d == Double.NaN) { // ここは通らない } if (Double.isNaN(d)) { // ここは通る }
SQLの null みたいなもので、全てのNaNは違う値とみなされるから。