Arrondissement des nombres [Résolu]

Messages postés
52
Date d'inscription
mardi 9 mars 2010
Statut
Membre
Dernière intervention
30 mars 2011
- - Dernière réponse : cs_Kysic
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
- 23 mai 2010 à 20:43
Bonjour
comment transformer un nombre 15.3333333 en 15.33 en java(seulement avec 2 chiffres après la virgule)?
j'ai utilisé :
double mo = ((m1 * T1) + (m2 * T2) + (m3 * T3)) / (T1 + T2 + T3);
DecimalFormat df = new DecimalFormat("0.00");
String s = df.format(mo);
double mo1 = Double.parseDouble(s);
mais une erreur s'affiche : Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "15,33"

merci
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
3
Merci
Salut,

Y'a un truc que je comprends pas : tu parles de format de nombre (à 2 chiffres après la virgule), mais pourquoi tu veux le stocker dans un Double ? Un double stocke un nombre, c'est tout, il n'y a pas de notion de format.

C'est pourquoi faire que tu veux limiter à 2 chiffres après la virgules ? Si c'est pour l'afficher à l'écran, il vaut mieux conserver la String. Sinon, je ne vois pas trop l'intérêt de perdre de la précision sur ton double calculé.

Si vraiment tu veux le remettre dans un double :
double mo = ((m1 * T1) + (m2 * T2) + (m3 * T3)) / (T1 + T2 + T3);
DecimalFormat df = new DecimalFormat("0.00");
String s = df.format(mo);
double mo1 = Double.parseDouble(s.replaceAll(",", ".");

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
Salut,

Remplace la virgule par un point.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
52
Date d'inscription
mardi 9 mars 2010
Statut
Membre
Dernière intervention
30 mars 2011
0
Merci
mais ce nombre est calculé par l'équation en haut, comment faire?
il me dit que l'erreur est dans cette ligne : double mo1 = Double.parseDouble(s);
Commenter la réponse de cs_manou9
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
0
Merci
Salut,
Si le but est juste de faire un arrondi sur ton double à ce moment là faut plutôt faire quelque chose comme :
double mo = ((m1 * T1) + (m2 * T2) + (m3 * T3)) / (T1 + T2 + T3);
double mo1 = (Math.round(mo * 100)) / 100;
Ca sera moins lourd.
Commenter la réponse de cs_Kysic