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?
et toujours la même erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;}
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à
et à ce moment cela fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;}
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....![]()
Partager