web-dev-qa-db-fra.com

Comment vérifier si un double est nul?

J'interroge une base de données et certains des résultats obtenus sont nuls. Je règle ces valeurs sur une variable avec un type de données double. Appelons la variable "résultats". J'ai donc essayé de créer une instruction if pour qu'elle soit égale à Null, ce qui n'a bien sûr pas fonctionné. Voici le code que j'ai pour cette déclaration 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 type d'argument double, null

Y a-t-il une meilleure façon de déterminer si c'est nul?

35
tylerbhughes

Je recommanderais d'utiliser un double et non un double comme type, puis vous vérifiez avec null.

35
Toby Samples

Premièrement, un Java double ne peut être null et ne peut pas être comparé à un Java null. (Le double type est un type primitif (non référencé) et les types primitifs ne peuvent pas être nuls.)

Ensuite, si vous appelez ResultSet.getDouble(...) , qui renvoie un double et non un Double, le comportement documenté est qu'un NULL (de la base de données) sera retourné à zéro. (Voir lien javadoc ci-dessus.) Ce n'est pas une aide 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 il est indiqué de renvoyer null pour une valeur NULL. (Pour plus d'informations, cette page documente les mappages par défaut des types SQL sur Java et, par conséquent, le type réel auquel vous devriez vous attendre getObject] .)

47
Stephen C

Une double primitive in Java ne peut jamais être nulle. Elle sera initialisée à 0.0 si aucune valeur n'a été donnée pour elle (sauf lors de la déclaration d'une double variable locale et de l'attribution d'une valeur, mais produire une erreur de compilation).

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

6
onit

Dire que quelque chose "est nul" signifie qu'il s'agit d'une référence à la valeur nulle. Les primitives (int, double, float, etc.) ne sont par définition pas des types de référence et ne peuvent donc pas avoir de valeur NULL. Vous aurez besoin de savoir ce que votre wrapper de base de données fera dans ce cas.

4
danben

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

4
RAY

Vous pouvez simplement définir la valeur de la variable double et comparer avec celle

Ex.

double var1= 0, var2=0;

if(var1!= 0 && var2!= 0 ){



}

J'espère que cela t'aidera!

0
Baljinder Maan