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

Java Discussion :

Double et RoundingMode.CEILING


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    octobre 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 191
    Points : 53
    Points
    53
    Par défaut Double et RoundingMode.CEILING
    Bonjour,
    Est ce que vous pouvez m'expliquer pourquoi le code suivant me retourne 0 et pour des valeurs 0.9, 0.5.. me retourne 1 ??
    Normalement le mode ceiling renvoie l'entier supérieur le plus proche à la valeur passée en paramètre comme la fonction ceil de la classe Math.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DecimalFormat df = new DecimalFormat("#");
    		df.setRoundingMode(RoundingMode.CEILING);
    	    Double d = 0.09;
    	    String f = df.format(d);
    	    System.out.println(f);
    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Bonjour,
    Mon constat est que seul le premier chiffre suivant le dernier chiffre affiché est pris en compte dans le calcul de l'arrondi.
    Pour le format "#" et 0.09, on a donc "0.0" qui est arrondi à "0".
    Je ne connais pas la raison de cette façon de faire.
    Le javadoc de DecimalFormat ou de RoundingMode ne permet pas de prévoir ce comportement. On peut noter que RoundingMode indique comment réduire un nombre à deux chiffres en un nombre à un chiffre, mais il n'indique pas comment un nombre à trois chiffres est réduit à un chiffre.
    S'il suffit d'afficher un entier, il vaut mieux passer par Math.ceil(double) avant de convertir le nombre en String.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/09/2003, 11h38
  2. division de "double" par "0"
    Par ickis dans le forum C
    Réponses: 14
    Dernier message: 31/08/2003, 19h09
  3. abs pour un long double
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 23/07/2003, 16h16
  4. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

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