2016-06-30 7 views

Antwort

0

angezeigt Sobald Sie mit %.2f die inital Formatierung zu tun, ist eine Option, laufen die resultierende Zeichenfolge durch eine regex basierte replace.

Die regex: 0*$, sollte alle nachlaufenden 0s am Ende der Zeichenfolge/Nummer erfassen.

So ist die volle Call-Methode könnte sein:

String.format("%.2f", 12.3).replaceAll("0*$", ""); //Will output "12.3" 
+0

Während dieser Fall in Frage beschrieben löst, könnte es die Bereitstellung von Lösungen lohnen für den allgemeinen Fall wie 'String.format ("%. 2f% .2f ", 12.3, 1.4)'. – Pshemo

+0

Er würde wahrscheinlich auch den Punkt (.) In dem Fall bekommen, in dem es doppelt .00 ist. Also vielleicht .replaceAll ("\\. {0,1} 0 * $", "") oder so. –

+0

@Pshemo das ist wahr, ich habe nicht daran gedacht –

5

Verwenden DecimalFormat mit abrundet Einstellung, wie:

DecimalFormat df = new DecimalFormat("0.##"); 
df.setRoundingMode(RoundingMode.DOWN) //rounding off 
df.format(12.345d) //12.34 
df.format(12.3d) //12.3 
df.format(12.00) //12 
+0

Ich bevorzuge RoundingMode.UNNECESSARY mich. Ansonsten ist Ihr Kommentar "Abrunden" irreführend. Auch RoundingMode.HALF_UP funktioniert gleich gut. –