86 votes

Formatage des décimales en Java à l'aide de String.format ?

Je dois formater une valeur décimale dans une chaîne de caractères où j'affiche toujours au moins 2 décimales et au plus 4.

Ainsi, par exemple

"34.49596" would be "34.4959" 
"49.3" would be "49.30"

Cela peut-il être fait en utilisant la commande String.format ?
Ou existe-t-il un moyen plus facile/meilleur de faire cela en Java ?

191voto

mostar Points 1282

Oui, vous pouvez le faire avec String.format :

String result = String.format("%.2f", 10.0 / 3.0);
// result:  "3.33"

result = String.format("%.3f", 2.5);
// result:  "2.500"

94voto

Richard Campbell Points 1956

Vous voulez java.text.DecimalFormat.

DecimalFormat df = new DecimalFormat("0.00##");
String result = df.format(34.4959);

41voto

Yuval Adam Points 59423

Voici un petit extrait de code qui fait l'affaire :

double a = 34.51234;

NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);

System.out.println(df.format(a));

3voto

cagcowboy Points 13721

Java.text.NumberFormat est probablement ce que vous voulez.

2voto

Brian Clapper Points 11222

NumberFormat et DecimalFormat sont certainement ce que vous voulez. Notez également que le NumberFormat.setRoundingMode() méthode. Vous pouvez l'utiliser pour contrôler la façon dont l'arrondi ou la troncature est appliquée pendant le formatage.

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