Arrondissement des nombres

Résolu
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011 - 23 mai 2010 à 12:00
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

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 mai 2010 à 12:56
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
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 mai 2010 à 12:30
Salut,

Remplace la virgule par un point.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_manou9 Messages postés 52 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 30 mars 2011
23 mai 2010 à 12:40
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);
0
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
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.
0
Rejoignez-nous