2009-01-11 4 views
48

Je dois formater une valeur décimale à une chaîne où je toujours conforme à la location 2 décimales et au plus 4.java format de chaîne décimal

donc par exemple

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

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

Répondre

64

Vous voulez java.text.DecimalFormat.

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

Suivez le même exemple, vous obtiendrez le mauvais résultat. Vous devez utiliser le RoundingMode.DOWN pour cet exemple particulier. Sinon, il utilise HALF_EVEN. Non, négatif cependant. –

1

Vous voulez java.text.DecimalFormat

3

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

37

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)); 
+0

Pas de négatif, mais votre code échoue pour le tout premier exemple, donné par l'affiche originale. Besoin d'utiliser RoundingMode.DOWN, sinon il utilise HALF_EVEN par défaut, je suppose. –

+0

Merci pour la correction Adeel –

1

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

113

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" 
+8

Cela peut ne pas être la bonne réponse à la question posée, mais c'est la réponse que je suis venu ici pour trouver. Merci! – milosmns

+0

Je cherchais "% .2f", ça m'a aidé –

Questions connexes