622 Stimmen

Wie kann man Fließkommazahlen ohne unnötige Dezimalzahlen (0) schön als String formatieren?

Ein 64-Bit-Double kann eine ganze Zahl +/- 2 darstellen. 53 genau.

In Anbetracht dieser Tatsache entscheide ich mich dafür, einen Double-Typ als einzigen Typ für alle meine Typen zu verwenden, da meine größte Ganzzahl eine vorzeichenlose 32-Bit-Zahl ist.

Aber jetzt muss ich diese Pseudo-Ganzzahlen ausdrucken, aber das Problem ist, dass sie auch mit echten Doppelzahlen vermischt sind.

Wie drucke ich also diese Doppelgänger in Java?

Ich habe versucht String.format("%f", value) was nahe dran ist, außer dass ich bei kleinen Werten eine Menge Nullen am Ende bekomme.

Hier ist ein Beispiel für die Ausgabe von %f

232.00000000
0.18000000000
1237875192.0
4.5800000000
0.00000000
1.23450000

Was ich will, ist:

232
0.18
1237875192
4.58
0
1.2345

Sicherlich kann ich eine Funktion schreiben, um diese Nullen zu trimmen, aber das ist viel Performance-Verlust aufgrund von String-Manipulation. Kann ich es mit einem anderen Formatierungscode besser machen?


Die Antworten von Tom E. und Jeremy S. sind inakzeptabel, da sie beide willkürlich auf zwei Dezimalstellen runden. Bitte verstehen Sie das Problem, bevor Sie antworten.


Bitte beachten Sie, dass String.format(format, args...) es ortsabhängig (siehe Antworten unten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X