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

avec Java Discussion :

Arrondir un nombre décimal


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 74
    Points : 31
    Points
    31
    Par défaut Arrondir un nombre décimal
    bonjour ou bonsoir,
    bon, j'ai fait une petite code java pour arrondir des nombres décimal.
    le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void main(String[] args) {
            String doubleVal = "1.74444449";
            BigDecimal bdTest = new BigDecimal(doubleVal);
            bdTest = bdTest.setScale(2, BigDecimal.ROUND_HALF_UP);
            System.out.println("bdTest:" + bdTest); 
        }
    lorsque je met "1.758" le resultat est 1.75 (correcte).
    mais lorsque je met "1.7444449" le resultat est 1.74 (incorrecte)normalement 1.75.
    aidez moi svp. et merci d'avance.

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par riyad25h Voir le message
    mais lorsque je met "1.7444449" le resultat est 1.74 (incorrecte)normalement 1.75.
    Pour 1.7444449, le résultat correct est bien 1.74 et non 1.75...

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ce n'est pas le bon mode d'arrondi, il faut utiliser ROUND_CEILING dans ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BigDecimal big = new BigDecimal(1.744444449);
     
    System.out.println("ROUND_CEILING : " + big.setScale(2, BigDecimal.ROUND_CEILING));
    System.out.println("ROUND_DOWN : " + big.setScale(2, BigDecimal.ROUND_DOWN));
    System.out.println("ROUND_FLOOR : " + big.setScale(2, BigDecimal.ROUND_FLOOR));
    System.out.println("ROUND_HALF_DOWN : " + big.setScale(2, BigDecimal.ROUND_HALF_DOWN));
    System.out.println("ROUND_HALF_EVEN : " + big.setScale(2, BigDecimal.ROUND_HALF_EVEN));
    System.out.println("ROUND_HALF_UP : " + big.setScale(2, BigDecimal.ROUND_HALF_UP));
    ROUND_CEILING : 1.75
    ROUND_DOWN : 1.74
    ROUND_FLOOR : 1.74
    ROUND_HALF_DOWN : 1.74
    ROUND_HALF_EVEN : 1.74
    ROUND_HALF_UP : 1.74

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Juste pour completer, si tu regardes la javadoc, il est ecrit que BigDecimal.ROUND_HALF_UP arrondi au plus proche (donc 1.74 pour 1.7444449). Le résultat de l'utilisation de BigDecimal.ROUND_HALF_UP plutot que BigDecimal.ROUND_HALF_DOWN n'est different que s'il n'y a pas de plus proche, auquel cas, le nombre sera arrondi au plus grand pour BigDecimal.ROUND_HALF_UP (par exemple 1.75 pour 1.745)

Discussions similaires

  1. Arrondir un nombre à deux décimales
    Par sic_88 dans le forum Débuter
    Réponses: 3
    Dernier message: 21/03/2009, 20h20
  2. Arrondir un nombre décimal
    Par tidou dans le forum Java ME
    Réponses: 5
    Dernier message: 23/01/2007, 16h43
  3. CRITERIA - Représentation binaire d'un nombre décimal signé.
    Par RamDevTeam dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/08/2005, 14h56
  4. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 08h36
  5. [langage] arrondir un nombre
    Par GMI3 dans le forum Langage
    Réponses: 4
    Dernier message: 24/06/2004, 11h18

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