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. #21
    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
    Donc c'est bien un problème d'affichage et tu devras le formater en String !

    C'est quoi ce tableau ? Une JTable ? Un composant Swing/AWT/SWT ? Un tableau HTML ? Autre chose ???

    a++

  2. #22
    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 quoi ce tableau ? Une JTable ? Un composant Swing/AWT/SWT ? Un tableau HTML ? Autre chose ???
    Le tableau est une Liste de liste (done une Liste) .Je l'affiche dans une page JSP .Mais je crois pas que c'est là le problème.

    Et puis ça veut dire quoi le formater en String ?

  3. #23
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par Viscapon Voir le message
    Le tableau est une Liste de liste (done une Liste) .Je l'affiche dans une page JSP .Mais je crois pas que c'est là le problème.

    Et puis ça veut dire quoi le formater en String ?
    Ben en fait, l'affichage de n'importe quel élément d'un type quelconque passe nécessairement par une conversion en String que ce soit dans une page jsp, dans la console ou dans un fichier.

    Le type double ne comporte aucune information sur son format, c'est simplement une donnée brute représentant un nombre flottant, l'affichage n'en sera qu'une représentation sous la forme d'une chaine de caractère.

    Ainsi, adiGuba t'as montré une manière de conformer l'affichage de ta variable double à tes attentes (ce qu'il appelle le formatage en String).

    Pour les calculs, tu utilise tes variables doubles.

  4. #24
    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
    Comme le nom du FAQ Comment convertir un nombre en chaîne formatée ? le dit, on crée une chaine formatée, donc String.

    Une question:

    As tu tenu compte de ma remarque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.replaceAll(",", ".");  // eventuellement
    Chez moi au Mexique il me faut un point décimal , mais chez toi il te faut sans doute une virgule, donc ne pas remplacer la , en .

    Le message d'erreur signifiant qu'il y a un caractère non numérique (le point)

    Iimmédiatement après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String str = df.format(mon_double);
    str est avec un . ou une , ?

    Dan

  5. #25
    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
    Le tableau est une Liste de liste (done une Liste) .Je l'affiche dans une page JSP .Mais je crois pas que c'est là le problème.
    C'est pourtant bien lorsque tu écris le double ans la JSP que tu dois le formater !

    1.0, 1.00, 1.000, 1.0000 etc sont les mêmes nombres et sont codé de la même manière en mémoire. La différenciation se fait seulement lors de l'affichage. Le formatage par défaut n'est pas contrôlable et peut même donner des résultats non-souhaité (comme l'écriture scientifique qui fait que 10000000.00 devient 1.0E7)

    Citation Envoyé par Viscapon Voir le message
    Et puis ça veut dire quoi le formater en String ?
    Cela veut simplement dire que tu va donner une représentation sous forme d'une chaine de caractères ... comme je l'ait indiqué dans ma toute première réponse...

    Citation Envoyé par danimo Voir le message
    Le message d'erreur signifiant qu'il y a un caractère non numérique (le point)
    Il faudrait plutôt utiliser la méthode parse() du NumberFormat pour avoir le même comportement, mais comme je l'ai dit ce n'est pas une solution car le format exact n'est pas garantie...

    a++

  6. #26
    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 danimo Voir le message

    As tu tenu compte de ma remarque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.replaceAll(",", ".");  // eventuellement
    Oui j'ai fais ça comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Double.parseDouble(df.format(testm.somme(annee ,"jav")/55.0).replaceAll(",", "."))
    Mais j'ai toujours le meme message d'erreur ,je comprend pas ce qui cloche la dessus :

    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)
    J'ai vu cependant quelques part que strurs est derrière de tels erreurs et qu'il faut parser les chaines autrement ! Et j'utilise struts pour mon affichage .

  7. #27
    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,

    Et sans cette ligne éventuelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.replaceAll(",", ".");  // eventuellement
    Il ne faut peut-être pas la mettre dans ton cas et garder la ","

    Dan

  8. #28
    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 danimo Voir le message
    Salut,

    Et sans cette ligne éventuelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.replaceAll(",", ".");  // eventuellement
    Il ne faut peut-être pas la mettre dans ton cas et garder la ","

    Dan
    Excuse moi danimo mais j'ai pas bien compris ton idée .

  9. #29
    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
    Ca fait du bien de se sentir écouté !

    Je reformule une dernière fois ma question : comment tu affiches tes valeurs dans ta page JSP ????? Un bout de code ne serait pas inutile...


    a++

  10. #30
    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
    Ca fait du bien de se sentir écouté !

    Je reformule une dernière fois ma question : comment tu affiches tes valeurs dans ta page JSP ????? Un bout de code ne serait pas inutile...
    Excuse moi adiGuba ,j'ai lu plusieurs fois ton post ,mais je n'arrive pas à en tirer profis ,d'ailleurs j'ai toujours la meme erreur .

    Voila comment j'affiche mon tab dans ma jsp (c'est un peut compliqué parcequ'il y a beaucoup de choses dérrières )
    code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    <td width="8"><nested:write  property="jav" /></td>
          <td width="8"><nested:write property="fev" /></td>
           <td width="8"><nested:write property="mars" /></td>
         <td width="8"><nested:write property="avril" /></td>
           <td width="8"><nested:write property="mai" /></td>
          <td width="8"><nested:write property="juin" /></td>
          <td width="8"><nested:write property="juil" /></td>
          <td width="8"><nested:write property="aout" /></td>
           <td width="8"><nested:write property="sep" /></td>
           <td width="8"><nested:write property="oct" /></td>
            <td width="8"><nested:write property="nov" /></td>
           <td width="8"><nested:write property="dec" /></td>
    C'est un tableau que j'alimente par une liste à travères une action struts .

    Cette liste est modifiée via une classe et c'est là ou j'utilise le formatage .

    code de la classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public static ArrayList<Finance> chargerList(Integer annee,String typ){
     
     
     
    		 ArrayList<Finance> financeList = new ArrayList<Finance>() ;
    		   Finance finance1=new Finance();
    		   Finance finance2=new Finance();
    		   DecimalFormat df = new DecimalFormat("0.00");
     
    finance2.setJav(Double.parseDouble(df.format(testm.somme(annee, typ, "jav")/22.0).replaceAll(",", "."))); 
     
    .....
    J'èspere qu'avec ça vous pourrriez mieux voir comment j'affiche mon tableau .

  11. #31
    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
    Enfin !


    Donc comme je l'ai dit tu supprimes ces conversions double->String->double qui ne servent à rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    finance2.setJav(testm.somme(annee, typ, "jav")/22.0);
    Et ensuite tu spécifies le formatage à l'affichage. La seule différence avec ma première réponse vient du fait que tu utilises Struts pour le formattage. C'est vers elle et sa doc qu'il faut donc se tourner ! Et on voit que le tag gère lui-même le DecimalFormat via la propriété format :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <td width="8"><nested:write  property="jav" format="#.00"/></td>

    Tu peux également spécifier la locale pour forcer l'affichage de ton choix (en français tu auras des virgule, en anglais des points...) :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <td width="8"><nested:write  property="jav" format="#.00" locale="en_US"/></td>

    a++

    PS : Je n'ai pas testé car je n'ai pas l'environnement qu'il faut, mais la solution est dans le tag <nested:write>

  12. #32
    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
    Enfin !
    Effectivement une solution simple ,qu'on aurais vite trouvé si j'avais poster la partie jsp , mais je me suis focalisé sur la partrie traitement java .

    Merci encore une fois adiGuba ,une dérnière remarque quand j'utilse le #.00 j'ai un truc du genre ,18 alors que moi je veux afficher le 0,18 .

    Donc jutilise le formate 0,00 .Cependant quand j'auaris à afficher un nombre comme 1,453456 est ce que j'aurais 1,45 ou 0,45 avec le formate 0,00 ?

  13. #33
    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
    une dérnière remarque quand j'utilse le #.00 j'ai un truc du genre ,18 alors que moi je veux afficher le 0,18 .
    Oui en effet je me suis focalisé sur les deux chiffres après la virgule. Après tu peux adapté plus précisément selon tes besoins

    Citation Envoyé par Viscapon Voir le message
    Donc jutilise le formate 0,00 .Cependant quand j'auaris à afficher un nombre comme 1,453456 est ce que j'aurais 1,45 ou 0,45 avec le formate 0,00 ?
    Tu conserveras bien deux chiffres après la virgule.

    Dans le format un 0 représente un caractère obligatoire qui sera affiché même s'il représente un zéro inutile.
    Les # représentes des caractères optionnels, qui ne seront affiché que si cela correspond à un valeur utile...

    Donc 0.00 est le bon format pour obtenir une valeur tel que 0,00 (en français).

    Maintenant tu pourrais peut-être utilisé les séparateurs de milliers avec le format suivant : #,##0.00
    Ce qui donnera pour 1234567890.123456 l'affichage suivant en français : 1 234 567 890,12

    a++

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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