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 :

Double avec deux chiffres après la virgule


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut Double avec deux chiffres après la virgule
    Bonjour à tous,

    J'ai une application ou je fais une division entre une variable et un chiifre (55)

    et j'obtiens le résultat X :

    Ce qui me dérange dans ce résultat X c'est que j'ai une dizaine de chiffres après la virgule ,et j'aimerais me contenter d'une précision de 2 chiffres seulement après la virgule .

    Merci .

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut Double avec deux chiffres après la virgule
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
             double mon_double = 1234.567892;
             DecimalFormat df = new DecimalFormat("0.00"); // import java.text.DecimalFormat;
             System.out.println(df.format(mon_double));
    Cordialement,

    Dan

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Merci pour vos réponses les amis ,

    Cependant le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df.format(mon_double)
    Est considéré comme un string et non pas un double ,ça me pose un problème en l'introduisant dans une fonction qui prend comme paramètre un double ,j'ai une erreur d'imcopatibilité de type !

  5. #5
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Utilises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Double.parseDouble(tonString)
    -> Mac Powa !
    -> A quoi sert IE? A télécharger Firefox !

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Après adaptation j'ai un code erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    java.lang.NumberFormatException: For input string: "0,00"
    Je pense qu'il n'aprécie pas le format "0.00" .

    Donc comment je peux eviter cette erreur ?

  7. #7
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    J'ai test chez moi et ça fonctionne correctement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.text.DecimalFormat;
    public class Test
    {
        public static void main(String[] args)
        {
            double test = 1234.56789;
            DecimalFormat df = new DecimalFormat("0.00");
            coucou(Double.parseDouble(df.format(test)));
            //System.out.println(Double.parseDouble(df.format(test)));
        }
        public static void coucou(double value)
        {
            System.out.println(value);
        }
    }
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    run:
    1234.57
    BUILD SUCCESSFUL (total time: 0 seconds)
    C'est bien ça que tu voulais?
    -> Mac Powa !
    -> A quoi sert IE? A télécharger Firefox !

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Viscapon Voir le message
    Est considéré comme un string et non pas un double ,ça me pose un problème en l'introduisant dans une fonction qui prend comme paramètre un double ,j'ai une erreur d'imcopatibilité de type !
    Personne n'a dit qu'il fallait que tu passes un string à cette méthode !

    Un double se contente de représenter une valeur numérique flottante, et n'a pas de notion de nombre de chiffre après la virgule.

    C'est une notion propre à sa représentation sous forme de chaine de caractère. Donc si tu veux modifier cela tu dois le faire lorsque tu affiches la valeur de ton double...

    C'est lorsque tu affiches la valeur de ton double que tu dois effectuer le formattage !

    a++

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    C'est bien ça que tu voulais?
    En effet c'est bien ce que je veux .

    cependant je procède comme ceci :

    J'ai une fonction qui prend comme paramètre un double ,et en suivant votre démarche j'ai cette ligne de code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setBudget(Double.parseDouble(df.format(class1.somme(annee, "jav")/55.0))) ;
    setBudget est une fonction qui prend un double .

    Et beinsur j'ai le meme message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    java.lang.NumberFormatException: For input string: "0,00"
    	sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    	java.lang.Double.parseDouble(Unknown Source)
    ........

  10. #10
    Membre régulier Avatar de NutellaPiou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Est-ce que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (class1.somme(annee, "jav")/55.0)
    retourne bien un string?
    -> Mac Powa !
    -> A quoi sert IE? A télécharger Firefox !

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par adiGuba Voir le message

    C'est lorsque tu affiches la valeur de ton double que tu dois effectuer le formattage !
    Je suis d'accord avec toi ,mais moi je le passe en pramètre dans une foncttion d'une classe un peut complexe (boucle,tableau ,ect ).

    En d'autres terme c'est pas un nombre que j'isole et que j'affiche après .


    Pour moi je dois l'introduire dans ma fonction près à etre utilisé .

    Dans mon cas mon double est :

    somme (annnée,mois) /55.0 //somme() est un int

    et la fonction setBudget (somme (annnée,mois) /55.0 ) , pour modifier le budget qui est à zero initialment .Voila .

  12. #12
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    J'ai pas compris
    Je suis d'accord avec toi ,mais moi je le passe en pramètre dans une foncttion d'une classe un peut complexe (boucle,tableau ,ect ).
    Et alors ? Le formatage se fait au moment de l'affichage pas avant.

    Sinon si tu veux faire des sommes de décimaux avec en plus une division derrière n'utilise surtout pas les double mais plutôt les BigDecimal, sinon tu risques d'avoir des problèmes de précision
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par NutellaPiou Voir le message
    Est-ce que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (class1.somme(annee, "jav")/55.0)
    retourne bien un string?
    Non c'est un double,mais après le df.Formate() je crois que j'ai affaire à un string !

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    double mon_double = 1234.567892;
             DecimalFormat df = new DecimalFormat("0.00"); // import java.text.DecimalFormat;
             String str = df.format(mon_double);
             str = str.replaceAll(",", ".");  // eventuellement
             System.out.println("str = " + str);
             mon_double = Double.parseDouble(str);
             System.out.println("mon_double = " + mon_double);

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Désolé mais cette solution est plutôt crade et ne garantie pas que l'affichage sera correcte (à cause de la notation scientifique). De plus c'est fortement dépendant de la locale



    De deux choses l'une :
    • Soit on veut arrondir une valeur pour les calculs uniquement et non pas pour l'affichage, et dans ce cas on utilise un BigDecimal ou les méthodes de la FAQ Java
      Mais cela ne garantira pas le format d'affichage...
    • Soit on veut modifier l'affichage des chiffres, et dans ce cas on doit passer par une des méthodes de formatage indiqué dans la FAQ et dans le lien que j'ai donné plus haut.


    a++

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Une confidence adiGuba:

    J'avoue que c'est ce que je pensais, c'est pourquoi j'ai commenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.replaceAll(",", ".");  // eventuellement
    car c'est mon cas, il me faut un . décimal

    Je voulais montrer à Viscapon qu'il devait faire son calcul avant la fonction setBudget(...

    Dan

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    danimo :

    J'ai pris en consideration ton nouveau code mais la meme erreur m'apparit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.lang.NumberFormatException: For input string: "0,00"
    	sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    	java.lang.Double.parseDouble(Unknown Source)
    adiGuba :

    J'ai regarder la faq que tu m'aproposé et donc c'est la meme idée il faut que je passe par un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DecimalFormat df = new DecimalFormat("0.00"); 
             String str = df.format(mon_double);
    Donc c'est la meme chose exccépté qu'il n'ya pas de converion de string en double .

    Mais je suis obligé de faire la converion de type vu que

    Me retourne un String et pas un double !

    Une autre remarque je dois utilisé le type double et pas d'autres parcequ'il ya une base de données dérièrre avec des types prédéfinis .

  18. #18
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Je voulais montrer à Viscapon qu'il devait faire son calcul avant la fonction setBudget(...
    Justement c'est imopssible sinon loin d'etre pratique dans mon cas :
    il s'agit d'une page dynamique qui affiche des tableaux avec des valeurs de type double ,je ne peux pas calculer toutes les valeurs puis les insérer ,je dois tout passer en argument dès le debut puis le code fait son travail d'affichage .

  19. #19
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Viscapon :

    Que veux-tu faire ? Arrondir la valeur ou l'afficher ? Ma solution concerne uniquement le formatage de l'affichage.
    Faire des conversions double->String->double est inutile !


    a++

  20. #20
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Viscapon :

    Que veux-tu faire ? Arrondir la valeur ou l'afficher ? Ma solution concerne uniquement le formatage de l'affichage.
    Ce que je veux faire :

    J'ai une fonction qui m'affiche sur une cellule d'un tableau un chiffre (de type double) .

    Cette fonction je lui passe comme paramètre le chiffre à afficher ,dans mon cas ce chiffre est : somme(annee,mois)/55.00 . Somme (annee,mois ) est un int.

    Quand j'affiche mon tableau j'ai des chiffres du genre 2.3534642357889009 .

    Ceci n'est pas pratique: de tels chiffre dans un teableau me dérange donc je veux avoir un chiffre de type 2.35 au lieu du 2.3534642357889009 .

    C'est tout ce que je veux .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher un double avec 2 chiffres après la virgule
    Par luilui dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 08/12/2010, 18h19
  2. [Débutant] afficher valeurs numériques avec deux chiffres après la virgule
    Par bahja29 dans le forum MATLAB
    Réponses: 4
    Dernier message: 07/04/2009, 11h48
  3. Réponses: 1
    Dernier message: 21/04/2008, 16h00
  4. Réponses: 3
    Dernier message: 10/02/2006, 15h31
  5. Pourcentage avec deux chiffres après la virgule
    Par Oluha dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/03/2005, 13h47

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