web-dev-qa-db-fra.com

java format de chaîne décimale

J'ai besoin de formater une valeur décimale en chaîne où j'affiche toujours au moins 2 décimales et au plus 4.

donc 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 simple/meilleur de le faire en Java?.

63
richs

Vous voulez Java.text.DecimalFormat.

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

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"
139
mostar

Voici un petit extrait de code qui fait le travail:

double a = 34.51234;

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

System.out.println(df.format(a));
38
Yuval Adam

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

3
cagcowboy

Vous voulez Java.text.DecimalFormat

1
duffymo

NumberFormat et DecimalFormat sont certainement ce que vous voulez. Notez également la méthode NumberFormat.setRoundingMode(). Vous pouvez l'utiliser pour contrôler la manière dont l'arrondi ou la troncature est appliqué lors du formatage.

1
Brian Clapper