Arrondissement des nombres [Résolu]

Signaler
Messages postés
52
Date d'inscription
mardi 9 mars 2010
Statut
Membre
Dernière intervention
30 mars 2011
-
cs_Kysic
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010
-
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

4 réponses

Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
90
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
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
90
Salut,

Remplace la virgule par un point.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
52
Date d'inscription
mardi 9 mars 2010
Statut
Membre
Dernière intervention
30 mars 2011

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);
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

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.