2010-06-01 8 views
21

J'ai deux éléments de données doubles dans un objet.Comment définir une valeur double sur une "non-valeur"

Parfois, ils sont définis avec une valeur correcte et parfois non. Lorsque le champ de formulaire à partir de laquelle leurs valeurs sont reçues n'est pas rempli, je veux les mettre à une valeur qui me dit, pendant le reste du code que les champs de formulaire ont été laissés vides.

Je ne peux pas définir les valeurs sur null car cela donne une erreur, est-il possible de les rendre 'non définies'.

PS. Non seulement je ne suis pas sûr que cela soit possible, mais cela n'a peut-être pas de sens. Mais s'il y a une meilleure pratique pour une telle situation, je serais ravi de l'entendre.

+0

donnez quelques exemples – ratty

Répondre

46

Deux options évidentes:

  • Utilisez Double au lieu de double. Vous pouvez ensuite utiliser null, mais vous avez modifié sensiblement les motifs de mémoire concernés.
  • Utilisez un « pas un nombre » (NaN):

    double d = 5.5; 
    System.out.println(Double.isNaN(d)); // false 
    d = Double.NaN; 
    System.out.println(Double.isNaN(d)); // true 
    

    Notez que d'autres opérations sur les nombres « normaux » peuvent vous donner des valeurs NaN aussi bien que (0 divisé par 0 par exemple).

+1

Merci ... NaN résoudra mes objectifs. Je ne ferai pas d'arithmétique sur ces chiffres, alors ça va le faire très bien. – Ankur

+6

Attention à 'NaN' que d'utiliser' == 'avec eux retourne toujours' false', même 'Double.NaN == Double.NaN' est' false'. Vous devez utiliser 'Double.isNaN (...)' pour vérifier si un 'double' n'est pas un nombre. – Jesper

+0

J'utilise aussi couramment le tour "Double = null". Je préférerais à l'option NaN, à la fois parce que NaN peut se produire comme une valeur, et parce que "null for unset" est une pratique courante en Java. – sleske

Questions connexes