251 votes

Comment imprimer un flottant avec 2 décimales en Java ?

Puis-je le faire avec System.out.print ?

338voto

Anthony Forloney Points 30083

Vous pouvez utiliser le printf comme suit :

System.out.printf("%.2f", val);

En bref, le %.2f indique à Java de retourner votre variable ( val ) avec 2 décimales ( .2 ) en représentation décimale d'un nombre à virgule flottante ( f ) à partir du début du spécificateur de format ( % ).

Il existe d'autres caractères de conversion que vous pouvez utiliser en plus de f :

  • d : nombre entier décimal
  • o : nombre entier octal
  • e : virgule flottante en notation scientifique

30 votes

Veuillez faire attention car le format String.format dépend de votre configuration locale actuelle, il se peut que vous n'obteniez pas un point comme séparateur. Préférez utiliser String.format(java.util.Locale.US,"%.2f", val);

3 votes

@gomino Pourquoi pas Locale.FRANCE ?

0 votes

@erickson en France le séparateur décimal est une virgule et non un point.

217voto

Bozho Points 273663

Vous pouvez utiliser DecimalFormat . Une façon de l'utiliser :

DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));

Une autre possibilité est de le construire en utilisant le #.## format.

Je trouve que toutes les options de formatage sont moins lisibles que l'appel des méthodes de formatage, mais c'est une question de préférence.

12 votes

Ce qui s'est passé avec le System.out.printf("%.2f", value) syntaxe ? Existe-t-il encore ?

7 votes

C'est le cas. c'est toujours une option - vous pouvez annuler votre réponse ;)

0 votes

On dirait que c'est mon option, car je ne sais pas encore comment utiliser DecimalFormat :) Merci !

102voto

John Persano Points 889

Je suggère d'utiliser String.format() si vous avez besoin de la valeur comme un String dans votre code.

Par exemple, vous pouvez utiliser String.format() de la manière suivante :

float myFloat = 2.001f;

String formattedString = String.format("%.02f", myFloat);

18 votes

"%.02f" et "%.2f" sont la même chose.

44voto

Kevin Sylvestre Points 15551
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

5 votes

Bonjour Kevin, si j'entre 10.0000, j'obtiens 10 seulement. Si je veux afficher 10.00, comment puis-je le faire ?

3 votes

@Mdhar9e utiliser DecimalFormat df = new DecimalFormat("0.00");

9voto

De nombreuses personnes ont mentionné DecimalFormat . Mais vous pouvez également utiliser printf si vous disposez d'une version récente de Java :

System.out.printf("%1.2f", 3.14159D);

Voir les documents sur le formateur pour plus d'informations sur la chaîne de format printf. .

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