Par le Langage Java Spécifications NaN
n'est pas égal à NaN
.
Par conséquent, toute ligne qui a provoqué x
être égale à NaN
serait à l'origine, comme
double x=Math.sqrt(-1);
À partir de le Langage Java Spécifications:
Virgule flottante opérateurs produire aucune exception (§11). Une opération
qui déborde produit signé de l'infini, une opération qui
underflows produit une valeur anormale ou un signé zéro, et un
opération qui n'a pas mathématiquement définie résultat produit NaN. Tous
numérique opérations avec NaN comme un opérande produire NaN. Comme
a déjà été décrite, NaN n'est pas ordonné, donc une comparaison numérique
opération impliquant un ou deux NaNs retourne false et tout !=
comparaison impliquant NaN renvoie true, y compris les x!=x lorsque x est NaN.