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 :

[BigDecimal] Problème d'arrondi


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut [BigDecimal] Problème d'arrondi
    Bonjour,

    Voici mon problème.

    J'ai une méthode qui permet d'afficher un décimal avec uncertain nombre de virgules, dont voici le code :

    public static String affichDecimalValue(double ad_value,
    int ai_nbDecimalMax)
    {
    BigDecimal lbd_value = new BigDecimal(ad_value);
    lbd_value = lbd_value.setScale(ai_nbDecimalMax, BigDecimal.ROUND_HALF_UP);
    return lbd_value.toString();
    }

    Le problème est le suivant, avec certains nombre l'arrondi ne se fait pas vers la moitié suppérieur (>=5) comme précisé dans la fonction setScale

    Exemple :

    1) affichDecimalValue(9.185,2) me donne comme résultat : 9.19
    2) affichDecimalValue(9.155,2) me donne comme résultat : 9.15
    3) affichDecimalValue(9.125,2) me donne comme résultat : 9.13

    Quelqu'un sait-il pourquoi l'exemple n°2 ne donne pas 9.16 !!!!!!!

    merci d'avance pour votre aide

    Olivier

    P.S. Si quelqu'un a une autre idée pour réaliser l'arrondi, je suis preneur aussi

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    si je fais : new BigDecimal(""+ad_value);
    cela fonctionne correctement.

    En fait je perd de la précision, je ne sais pour quelle raison avec 9.155

  3. #3
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Parceque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lbd_value = new BigDecimal(test);
    ne tombe pas juste et donne:

    9.1549999999999993605115378159098327159881591796875

    Il faut faire new
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BigDecimal(new Double(test).toString());
    En fait quand on travaille avec BigDecimal et avec des doubles, ont à toujours des erreurs à un certain nombre de décimales, il faut utiliser BigDecimal et des String.

  4. #4
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Il me semble qu'il faut utiliser StrictMath si tu veux être sûr que tes résultats soient toujours les mêmes (parce que sinon ça peut légèrement varier en fonction de la plate forme).

    Pour les arrondis, regarde plutôt, je pense, du côté de Math.round().

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    merci pour l'info

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

Discussions similaires

  1. Problème d'arrondi
    Par rigobert dans le forum C
    Réponses: 28
    Dernier message: 05/04/2006, 12h56
  2. problème d'arrondi à 2 chiffres après virgule
    Par nerick dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 17h26
  3. Problème d'arrondis
    Par steps5ive dans le forum Access
    Réponses: 5
    Dernier message: 09/12/2005, 17h35
  4. [DECIMAL] problème d'arrondi
    Par Boosters dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/11/2005, 15h30
  5. Problème d'arrondi
    Par ptitsoleil87 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/01/2005, 09h37

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