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 :

Problème de décimales lors d'un arrondi


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut Problème de décimales lors d'un arrondi
    Bonjour,
    Pourquoi le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double moyenne = 0;
    double moyenneCalc = 0;
    moyenneCalc = (sumD1 / sumD2) / (sumD3 / sumD4);
    moyenne = (Math.round(1000.0*moyenneCalc))/1000.0;
    où moyenneCalc vaut 2534 après le calcul me donne moyenne = 2.5340000000000003 et non 2.534 comme souhaité ?
    Note : sumD1, sumD2, sumD3 et sumD4 sont également des "double"
    Merci par avance.

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Si c'est juste une question de formatage, tu peux utiliser la classe DecimalFormat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          DecimalFormat df = new DecimalFormat("0.000");
     
          System.out.println(df.format(2.5340000000000003));
    affiche
    2,534

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Points : 66
    Points
    66
    Par défaut
    Merci pour ta réponse. Effectivement, en formattant de cette manière, j'arrive à obtenir le nombre tel que je l'attends... mais le résultat obtenu est quand même surprenant, non ? Pourquoi le code donne-t-il un tel résultat ?

  4. #4
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    C'est la façon qu'a Java de traiter les opérations de flottants. Je ne suis pas informé sur le sujet, mais je constate que par exemple la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(10.0 / 3.0);
    affiche
    3.3333333333333335
    alors qu'on s'attendrait à voir 3.333333...

Discussions similaires

  1. [XL-2007] Problème de décimales lors d'une copie
    Par Jay-P dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2010, 00h33
  2. Réponses: 9
    Dernier message: 04/03/2005, 13h58
  3. [CR8] Problème de décimales avec Centura
    Par ccquick dans le forum SAP Crystal Reports
    Réponses: 13
    Dernier message: 05/10/2004, 10h46
  4. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

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