Wie formatiere ich eine Zahl in Java?
Was sind die "Best Practices"?
Muss ich eine Zahl runden, bevor ich sie formatiere?
32.302342342342343
=>32.30
.7323
=>0.73
etc.
java
number-formatting
ScArcher2
quelle
quelle
Double.valueOf
anstelle von zu verwendennew Double(number).doubleValue()
. Die letzte Zeile des letzten Beispiels wäre daherdouble dd2dec = Double.valueOf(df2.format(dd));
Sie und
String.format()
werden neue beste Freunde sein!https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
quelle
String.format
dient zum Formatieren von Zeichenfolgen, nicht von Zahlen.DecimalFormat
. UndDecimalFormat
ist etwas schneller alsString.format
. SimpleSystem.currentTimeMillis
Diff zeigt das.Beachten Sie, dass Klassen, die von NumberFormat (und den meisten anderen Format-Nachkommen) abstammen, nicht synchronisiert werden. Es ist eine gängige (aber gefährliche) Praxis, Formatobjekte zu erstellen und in statischen Variablen in einer util-Klasse zu speichern. In der Praxis funktioniert es so gut wie immer, bis eine erhebliche Belastung auftritt.
quelle
Runde Zahlen, ja. Dies ist die Hauptbeispielquelle .
quelle
Versuche dies:
Einfach und effizient.
quelle
Verwenden Sie DecimalFormat .
quelle
In der Standardbibliothek gibt es zwei Ansätze. Eine ist die Verwendung von java.text.DecimalFormat. Die anderen kryptischeren Methoden (String.format, PrintStream.printf usw.), die auf java.util.Formatter basieren, sollten C-Programmierer bei Laune halten (ish).
quelle
Wie Robert in seiner Antwort ausgeführt hat: DecimalFormat ist weder synchronisiert noch garantiert die API die Thread-Sicherheit (dies kann von der von Ihnen verwendeten JVM-Version / dem verwendeten JVM-Anbieter abhängen).
Verwenden Sie stattdessen Spring's Numberformatter , der threadsicher ist.
quelle
Wenn beispielsweise der an die formatDouble () -Methode übergebene Doppelwert 345.9372 ist, ist das folgende Ergebnis: 345.937 Wenn der Wert .7697 an die Methode übergeben wird, ist das Folgende das Ergebnis: .770
quelle