[Double][NaN] identification d'un Type Not A Number
Bonjour,
J'ai eu quelque chose d'assez déroutant.
Lors d'un import en base j'ai une erreur d'execution sur un PreparedStatement.setDouble.
En affichant le double avec un System.out.println j'obtiens NaN
réflexe:
je teste si le double est NaN ou pas....
comment?
Code:
1 2 3 4
|
double value = resultat_d_un_calcul_tout_complique();
if (value==Double.NaN) {PreparedStatement.setDouble(1,value);}
else {PreparedStatement.setNull(1, Types.NUMERIC;} |
et toujours la même erreur...
je me rend compte que
value==Double.Nan est toujours false malgré le fait que value soit bien NaN!
Je change le test avec celui là
Code:
1 2 3
| Double d = new Double(value);
if (d.equals(new Double(Double.NaN))) {PreparedStatement.setDouble(1,value);}
else {PreparedStatement.setNull(1, Types.NUMERIC;} |
et à ce moment cela fonctionne...
Comment se fait-il que Double.NaN qui soit un double ne permette pas d'être comparé avec un double qui est Not a Number?
Alors que c'est possible en passant par l'objet...
Quelqu'un a-t-il une explication?
Merci.... :wink: