Ich verwende derzeit den folgenden Code, um ein Double zu drucken:
return String.format("%.2f", someDouble);
Dies funktioniert gut, außer dass Java das Dezimaltrennzeichen (ein Komma) meines Gebietsschemas verwendet, während ich einen Punkt verwenden möchte. Gibt es eine einfache Möglichkeit, dies zu tun?
java
formatting
double
dtech
quelle
quelle
Antworten:
Verwenden Sie die Überladung, mit
String.format
der Sie das Gebietsschema angeben können:Wenn Sie nur eine Nummer formatieren - so wie Sie hier sind -, ist die Verwendung
NumberFormat
wahrscheinlich besser geeignet. Wenn Sie jedoch den Rest der Formatierungsfunktionen von benötigenString.format
, sollte dies problemlos funktionieren.quelle
Eine drastischere Lösung besteht darin, Ihr Gebietsschema früh in main () festzulegen.
Mögen:
quelle
Sie können ein zusätzliches Gebietsschema an java.lang.String.format sowie an java.io.PrintStream.printf (z. B. System.out.printf ()) übergeben:
Dies führt zu folgenden Ergebnissen (auf meinem PC):
Siehe String.format in der Java-API.
quelle
out.printf((Locale)null, ...)
oder verwendenout.format((Locale)null, ...)
, um eine vom Gebietsschema unabhängige Darstellung zu erhalten. (und es gibt auchLocale.ROOT
)Viel zu spät, aber wie hier erwähnt, ist die Beispielverwendung von
NumberFormat
(und seiner UnterklasseDecimalFormat
)quelle
DecimalFormatSymbols
und Setzen des Trennzeichens vor dieser Methode einmal erfolgen sollte.Sie können NumberFormat und DecimalFormat verwenden.
Schauen Sie sich diesen Link in den Java Tutorials LocaleSpecific Formatating an
Der Abschnitt mit dem Titel "Gebietsschemasensitive Formatierung" ist genau das, was Sie brauchen.
quelle
Ich hatte das gleiche Problem ..
55.1
verwandelt in55,10
. Meine schnelle (schmutzige?) Lösung lautet:String.format("%.2f", value).replaceAll(",",".");
quelle