Comment vérifier si un double est nulle?
Je suis de l'interrogation d'une base de données et certains des résultats que j'obtiens sont nulles. Je suis la définition de ces valeurs à une variable avec un type de données double. Appelons la variable "résultats". J'ai donc essayé la configuration d'une instruction if pour voir, elle est égale à Null, qui bien sûr ne fonctionne pas. Voici le code que j'ai pour que si la déclaration:
if (results == null)
{
results = 0;
}
L'erreur que j'obtiens avec ce code:
L'opérateur == est pas défini pour le type d'argument(s) double, null
Est-il une meilleure façon de déterminer si elle est null?
- Vous avez besoin de récupérer la valeur comme quelque chose qui peut effectivement être
null
, commeDouble
. Les Primitives ne peut pas être null.
Vous devez vous connecter pour publier un commentaire.
Je vous conseille d'utiliser un Double pas un double de votre type, alors vous vérifiez contre null.
results
êtreDouble
au lieu dedouble
ne sera pas corrigé le problème.Double results = rs.getDouble();
sera jamais assigner unnull
àresults
.Tout d'abord, un Java
double
ne peut pas être nulle, et ne peut pas être comparé avec un Javanull
. (Ledouble
type est une primitive (sans référence) de type et de type primitif ne peut pas être null.)Prochain, si vous appelez
jeu de résultats.getDouble(...)
, qui renvoie undouble
pas unDouble
, le comportement documenté est qu'un NUL (à partir de la base de données) seront remis à zéro. (Voir javadoc lien ci-dessus.) Qui n'est d'aucune aide si zéro est une valeur légitime pour cette colonne.Afin que vos options sont les suivantes:
utilisation
jeu de résultats.wasNull()
pour tester un (base de données) NULL ... immédiatement après legetDouble(...)
appel, ouutilisation
jeu de résultats.getObject(...)
, et de type cast le résultat deDouble
.La
getObject
méthode livrera la valeur d'unDouble
(en supposant que le type de colonne estdouble
), et est documenté pour revenirnull
pour une valeur NULLE. (Pour plus d'informations, cette page documents les mappages par défaut de SQL types de types Java, et donc ce type réel que vous devriez vous attendregetObject
à livrer.)Un double primitifs en Java ne peut jamais être nulle. Il sera initialisé à 0.0 si aucune valeur n'a été donné pour lui (sauf lors de la déclaration d'un local variable de type double et à ne pas attribuer de valeur, mais cela produira une erreur de compilation).
Plus d'infos sur les défaut des valeurs primitives ici.
Pour dire que quelque chose "est null" signifie que c'est une référence à la valeur nulle. Primitifs (int, double, float, etc) sont, par définition, pas les types de référence, de sorte qu'ils ne peuvent pas contenir de valeurs null. Vous aurez besoin de savoir ce que votre base de données wrapper faire dans ce cas.
Comment en êtes-vous la valeur de "résultats"? Êtes-vous via le jeu de résultats.getDouble()? Dans ce cas, vous pouvez vérifier
jeu de résultats.wasNull()
.Je crois que Double.NaN pourriez être en mesure de couvrir. C'est la seule 'null' valeur double contient.