186 votes

arrondir à 2 décimales en java ?

J'ai lu beaucoup de questions sur stackoverflow, mais aucune ne semble fonctionner pour moi. math.round() pour arrondir. Voici le code :

class round{
    public static void main(String args[]){

    double a = 123.13698;
    double roundOff = Math.round(a*100)/100;

    System.out.println(roundOff);
}
}

Le résultat que j'obtiens est : 123 mais je veux qu'il le soit 123.14 . j'ai lu qu'en ajoutant *100/100 vous aidera mais comme vous pouvez le voir, je n'ai pas réussi à le faire fonctionner.

il est absolument indispensable que l'entrée et la sortie soient doubles.

ce serait d'une grande aide si vous modifiez la ligne 4 du code ci-dessus et que vous le postiez.

415voto

SiB Points 5284

Eh bien, celui-ci fonctionne...

double roundOff = Math.round(a * 100.0) / 100.0;

La sortie est

123.14

Ou comme @Rufein l'a dit

 double roundOff = (double) Math.round(a * 100) / 100;

cela le fera pour vous aussi.

84voto

amitchhajer Points 4087
     double d = 2.34568;
     DecimalFormat f = new DecimalFormat("##.00");
     System.out.println(f.format(d));

52voto

Arun Points 343
String roundOffTo2DecPlaces(float val)
{
    return String.format("%.2f", val);
}

45voto

Reimeus Points 93429
BigDecimal a = new BigDecimal("123.13698");
BigDecimal roundOff = a.setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(roundOff);

13voto

philippe Points 2046

Retournez à votre code, et remplacez 100 par 100.00 et faites-moi savoir si ça marche. Cependant, si vous voulez être formel, essayez ceci :

import java.text.DecimalFormat;
DecimalFormat df=new DecimalFormat("0.00");
String formate = df.format(value); 
double finalValue = (Double)df.parse(formate) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X