IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Double][NaN] identification d'un Type Not A Number


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Par défaut [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 : 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;}
    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 : 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;}
    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....

  2. #2
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    je crois que tous les tests (>, <, ==, !=) vont renvoyer false si un des operandes est NaN. y'a la meme chose dans d'autres prog.

    a noter qu'il existe une methode Double.isNan(), ainsi que Double.isNaN(double);

    A+

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Par défaut
    OK.. merci beaucoup.
    Je ne savais pas que les operandes ne fonctionnaient pas sur des types NaN.
    Merci
    Par contre j'ai zappé Double.isNan(double).... dans la javadoc.
    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Double.Not A Number
    Par tfc3146 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/02/2009, 21h02
  2. Identification dynamique du type d'un objet
    Par Pragmateek dans le forum Fortran
    Réponses: 15
    Dernier message: 27/01/2009, 20h55
  3. Réponses: 13
    Dernier message: 16/03/2008, 13h35
  4. MouseWheel user-defined type not defined
    Par jibouze dans le forum IHM
    Réponses: 7
    Dernier message: 08/06/2006, 17h36
  5. Réponses: 5
    Dernier message: 13/03/2006, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo