Java-Dezimalformatierung mit String.format?


73

Ich muss einen Dezimalwert in eine Zeichenfolge formatieren, in der immer mindestens 2 Dezimalstellen und höchstens 4 angezeigt werden.

So zum Beispiel

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

Kann dies mit dem Befehl String.format erfolgen?
Oder gibt es eine einfachere / bessere Möglichkeit, dies in Java zu tun?

Antworten:


84

Sie möchten java.text.DecimalFormat.

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

3
Folgen Sie dem gleichen Beispiel, Sie erhalten das falsche Ergebnis. Für dieses Beispiel müssen Sie den RoundingMode.DOWN verwenden. Andernfalls wird HALF_EVEN verwendet. Nein, aber negativ.
Adeel Ansari

158

Ja, Sie können es tun mit String.format:

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

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

21
Dies ist möglicherweise nicht die richtige Antwort auf die gestellte Frage, aber es ist die Antwort, die ich hier gefunden habe. Vielen Dank!
Milosmns

41

Hier ist ein kleines Code-Snippet, das die Arbeit erledigt:

double a = 34.51234;

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

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

Keine Negative, aber Ihr Code schlägt beim ersten Beispiel des Originalplakats fehl. Sie müssen RoundingMode.DOWN verwenden, andernfalls wird vermutlich standardmäßig HALF_EVEN verwendet.
Adeel Ansari

3

java.text.NumberFormat ist wahrscheinlich das, was Sie wollen.



1

NumberFormat und DecimalFormat sind definitiv das, was Sie wollen. Beachten Sie auch die NumberFormat.setRoundingMode()Methode. Sie können damit steuern, wie beim Formatieren Rundungen oder Kürzungen angewendet werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.