Un NaN est renvoyé (en vertu de la norme IEEE 754) afin de continuer d'un calcul quand une véritable indéfini (intermédiaire) résultat a été obtenu. L' infini est retourné afin de poursuivre un calcul après un débordement a eu lieu.
Ainsi, le comportement
Math.sqrt(Double.NEGATIVE_INFINITY); // NaN
est spécifiée, car elle est connue (facilement et rapidement) qu'une valeur non définie a été généré; en se basant uniquement sur le signe de l'argument.
Cependant l'évaluation de l'expression
Math.pow(Double.NEGATIVE_INFINITY, 0.5); // Infinity
rencontre à la fois un dépassement ET une opération non valide. Cependant, l'opération non valide la reconnaissance dépend de façon critique sur le degré de précision de la détermination de la deuxième argument est. Si le second argument est le résultat d'un avant arrondi de l'opération, alors il peut ne pas être exactement égale à 0,5. Ainsi, les moins graves, de la détermination, de la reconnaissance d'un dépassement de capacité, est retourné afin d'éviter la dépendance critique de la raison sur l'exactitude de la deuxième argument.
Plus de détails sur une partie du raisonnement derrière la norme IEEE 754 la norme, y compris le raisonnement derrière le retour des valeurs d'indicateur au lieu de générer des exceptions, est disponible dans
Ce Que Tout Informaticien Devez Savoir À Propos De L'Arithmétique À Virgule Flottante (1991, David Goldberg),
qui est à l'Annexe D de la
Sun Microsystems Pour Le Calcul Numérique Du Guide.