J'ai un double en Java et je veux vérifier si c'est le cas NaN
. Quelle est la meilleure façon de procéder?
284
Utilisez la statique Double.isNaN(double)
méthode ou votre Double
de » .isNaN()
méthode.
// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
Faire simplement:
if (var == Double.NaN) {
...
}
n'est pas suffisant en raison de la définition de la norme IEEE pour le NaN et les nombres à virgule flottante .
Double.isNaN should be (true)
belle réponsevalue == Double.NaN
ne fonctionne pas, maisDouble.isNaN(value)
fonctionne très bien.Essayez
Double.isNaN()
:Notez que [
double.isNaN()
] ne fonctionnera pas, car les doubles sans boîte n'ont pas de méthodes associées.la source
Double.isNan()
et nondouble.IsNan()
, non?Vous pouvez également envisager de vérifier si une valeur est finie via
Double.isFinite(value)
. Depuis Java 8, il y a une nouvelle méthode dans laDouble
classe où vous pouvez vérifier immédiatement si une valeur n'est pas NaN et l'infini.la source
Vous pouvez vérifier NaN en utilisant
var != var
.NaN
n'est pas égalNaN
.EDIT : C'est probablement de loin la pire méthode. C'est déroutant, terrible pour la lisibilité et mauvaise pratique globale.
la source
isNan
est meilleure pour la lisibilité, mais cela fonctionne, non? Et laisNan
méthode utilise cela pour vérifierNaN
.isNaN
fait cela sous le capot, mais comment ça marche? Comment quelque chose ne s'égale pas ??Les débutants ont besoin d'exemples pratiques. essayez donc le code suivant.
la source
L'extrait de code ci-dessous aidera à évaluer le type primitif contenant NaN.
double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;
la source