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 precision Fortran Java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Par défaut Double precision Fortran Java
    Bonjour, j'ignore est ce que je me suis trompé d'endroit pour post, mais je vais essayer d'expliquer.
    Je rencontre maintenant un problème avec la variable double, lors de l'addition exemple 13.2 + 5.7 au lieu d'obtenir 18.9, j’obtiens 18.899999999999996
    ce n'est pas la le problème parce que après quelques recherches j'ai trouver qu'on peut arrondir le résultat.

    mes calculs consiste a faire des calculs statistique sur plusieurs variables ce qui rend pas la tache simple a faire, on peut pas définir est ce que le nombre de valeur après la virgule est égale a 2 ou a 50, pour l'instant j'utilise le type double pour le calcule et j’obtiens des résultats mauvais.
    Sur le même programme mais réalisé en Fortran les variable sont déclaré Double Precision

    Donc ma question est ce que l'un de vous connais c'est quoi le type double precision sous Java? ou bien existe t'il une méthode pour gérer ce problème ?

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Pour une précision idoine, il faut utiliser BigDecimal.

    Cf la FAQ.

  3. #3
    Membre éclairé Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Pour une précision idoine, il faut utiliser BigDecimal.

    Cf la FAQ.
    Même pour faire 13.2 + 5.7 ??
    Ca me parait bizarre quand même ...

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Eh bien oui, même pour un calcul aussi simple.
    Les float et compagnie ne sont tout simplement pas faits pour le calcul de précision.

    Cf les specs.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    On pourrait arguer qu'un float n'a certes pas une précision suffisante, comme montré avec l'exemple (double)(13.2f + 5.7f) ; mais qu'un double est amplement suffisant pour faire des statistiques.
    Ça reste du calcul approché, mais je vois pas le problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par thelvin Voir le message
    On pourrait arguer qu'un float n'a certes pas une précision suffisante, comme montré avec l'exemple (double)(13.2f + 5.7f) ; mais qu'un double est amplement suffisant pour faire des statistiques.
    Ça reste du calcul approché, mais je vois pas le problème.
    Ça dépend un peu des statistiques !
    Mais pour moi, si on me dit "on peut arrondir le résultat, mais ça ne me va pas", bein je répond "utilise BigDecimal". J'aurais peut-être dû faire valoir qu'effectivement, sur des statistiques simples, on peut se contenter des float/double.

  7. #7
    Membre éclairé Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Eh bien oui, même pour un calcul aussi simple.
    Les float et compagnie ne sont tout simplement pas faits pour le calcul de précision.

    Cf les specs.
    Je suis d'accord pour les calculs de précisions ou faisant intervenir des rationnels ou des multiplications mais pour additionner 2 nombres à 1 chiffre après la virgule le BigDecimal ça me parait un peu comme le marteau pour tuer la mouche

  8. #8
    Membre éclairé Avatar de zeyr2mejetrem
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 471
    Par défaut
    est ton ami !

    Un type double en java est un nombre sur 8 octets donc compris entre 4.9*10-324 à 1.7*10308

    Donc ton problème ne vient pas du type mais plus probablement des casts implicites qui sont faits dans ton code.

    Pourrais tu poster un peu de ton code (des endroits significatifs) ?

Discussions similaires

  1. [double] problème addition java
    Par franfr57 dans le forum Langage
    Réponses: 1
    Dernier message: 26/03/2009, 17h55
  2. Champ BCD & Champ DOUBLE PRECISION
    Par WebPac dans le forum Oracle
    Réponses: 10
    Dernier message: 21/03/2007, 17h21
  3. [Interfacage]Fortran - Java
    Par nouida dans le forum Général Java
    Réponses: 3
    Dernier message: 17/11/2005, 06h06
  4. IBExpert : troncature des double precision ?
    Par Magnus dans le forum Outils
    Réponses: 1
    Dernier message: 25/08/2005, 15h07
  5. Passer de DOUBLE PRECISION en NUMERIC
    Par alex4 dans le forum SQL
    Réponses: 5
    Dernier message: 18/10/2004, 16h24

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