Comment vérifier si un double est nulle?

J'interroge une base de données et certains des résultats que j'obtiens sont nuls. Je mets ces valeurs à une variable avec un type de données double. Appelons la variable "résultats". J'ai donc essayé de configurer une instruction if pour la voir égale à Null, ce qui n'a bien sûr pas fonctionné. Voici le code que j'ai pour cette instruction if:

if (results == null)
{
     results = 0;
}

L'erreur que je reçois avec ce code est:

L'opérateur = = n'est pas défini pour le(S) Type (S) d'argument double, null

Est-il un meilleur moyen de déterminer si c'est nul?

29
demandé sur tylerbhughes 2012-02-01 06:51:06

6 réponses

Je recommanderais d'utiliser un Double pas un double comme type alors vous vérifiez contre null.

31
répondu Toby Samples 2012-02-01 03:42:25

Tout d'abord, un Java double ne peut pas être null et ne peut pas être comparé à un Java null. (Le type double est un type primitif (non-référence) et les types primitifs ne peuvent pas être null.)

Ensuite, si vous appelez ResultSet.getDouble(...), cela renvoie un double pas un Double, le comportement documenté est qu'un NULL (de la base de données) sera retourné comme zéro. (Voir javadoc lié ci-dessus.) Cela n'aide pas si Zéro est une valeur légitime pour cette colonne.

Donc vos options sont:

La méthode getObject fournira la valeur en tant que Double (en supposant que le type de colonne est double), et est documenté pour retourner null pour un NULL. (Pour plus d'informations, cette page documente les mappages par défaut des types SQL aux types Java, et donc type réel que vous devriez vous attendre à ce que getObject Livre.)

46
répondu Stephen C 2014-06-08 03:27:05

Une double primitive en Java ne peut jamais être nulle. Il sera initialisé à 0.0 si aucune valeur n'a été donnée pour cela (sauf en déclarant une variable double locale et en n'attribuant pas de valeur, mais cela produira une erreur de compilation).

Plus d'informations sur les valeurs primitives par défaut ici .

6
répondu onit 2012-02-01 03:04:27

Dire que quelque chose "est nul" signifie que c'est une référence à la valeur null. Les Primitives (int, double, float, etc.) ne sont par définition pas des types de référence, elles ne peuvent donc pas avoir de valeurs nulles. Vous devrez savoir ce que votre wrapper de base de données fera dans ce cas.

4
répondu danben 2012-02-01 02:53:23

Comment obtenez-vous la valeur des "résultats"? Vous l'obtenez via ResultSet.getDouble ()? Dans ce cas, vous pouvez vérifier ResultSet.wasNull().

4
répondu RAY 2012-02-01 03:05:36

Je crois Double.NaN pourrait être en mesure de couvrir cela. C'est la seule valeur' null ' double contient.

-1
répondu 2012-02-01 02:53:57