Doppelte Dezimalformatierung in Java

Lesezeit: 5 Minuten

Doppelte Dezimalformatierung in Java
Christoffer

Ich habe einige Probleme beim Formatieren der Dezimalstellen eines Doubles. Wenn ich einen doppelten Wert habe, z. B. 4,0, wie formatiere ich die Dezimalstellen so, dass es stattdessen 4,00 ist?

  • Versuchen Sie es mit String.format() oder java.text.Format.

    – Code-Lehrling

    9. Oktober 2012 um 18:39 Uhr


  • mögliches Duplikat von Nur zwei Stellen nach dem Dezimalzeichen anzeigen

    – Raedwald

    3. April 2014 um 12:06 Uhr

  • Mögliches Duplikat von Beste Möglichkeit, einen Double-Wert auf 2 Dezimalstellen zu formatieren

    – Keal

    21. Oktober 2015 um 2:11 Uhr

1646264229 729 Doppelte Dezimalformatierung in Java
Kosa

Einer der Wege wäre die Verwendung Zahlenformat.

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));

Ausgabe:

4.00

  • Ja, aber ich will kein Komma, ich will ein Dezimalzeichen.

    – Christoffer

    9. Oktober 2012 um 18:46 Uhr

  • Ich bekomme ein Komma. Das habe ich getan. “double variable; NumberFormat formatter = new DecimalFormat(“#0.00”); System.out.println(formatter.format(variable));

    – Christoffer

    9. Oktober 2012 um 18:53 Uhr


  • Sie erhalten ein Komma wegen der von Ihrer JVM verwendeten Standardsprache, die sich wahrscheinlich von denen von Nambari unterscheidet. Schauen Sie sich NumberFormat javadoc an: docs.oracle.com/javase/1.4.2/docs/api/java/text/…

    – Michael Silbermann

    9. Oktober 2012 um 18:54 Uhr


  • Wie zim2001 zeigte, könnte Ihr Gebietsschema anders sein. Lesen Sie den Link in meiner Antwort. Am Ende finden Sie Informationen dazu.

    – kosa

    9. Oktober 2012 um 18:57 Uhr


  • Optional möchten Sie möglicherweise ein weiteres Trennzeichen für Ziffern mit mehr als 3 vor dem Komma hinzufügen und dann Folgendes verwenden NumberFormat formatter = new DecimalFormat("#,000.00"); System.out.println(formatter.format(4.0));

    – José Mhlanga

    27. August 2020 um 7:01 Uhr


Doppelte Dezimalformatierung in Java
Rohit Jain

Mit Java 8 können Sie verwenden format Methode..: –

System.out.format("%.2f", 4.0); // OR

System.out.printf("%.2f", 4.0); 
  • f wird verwendet für floating Punktwert..
  • 2 nach dem Komma bedeutet, Anzahl der Nachkommastellen .

Für die meisten Java-Versionen können Sie verwenden DecimalFormat: –

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));

1646264231 544 Doppelte Dezimalformatierung in Java
Vincent Mimoun-Prat

Verwenden String.format:

String.format("%.2f", 4.52135);

Laut Dokumenten:

Das Gebietsschema, das immer verwendet wird, ist das von zurückgegebene Locale.getDefault().

  • String.format akzeptiert auch ein Gebietsschema als ersten Parameter, um die Formatierung von Dezimalzeichen zu berücksichtigen.

    – Vincent Mimoun-Prat

    9. Oktober 2012 um 18:41 Uhr

  • Um gebietsschemaspezifische Dezimalzeichen (z. B. ein Komma) zu vermeiden, geben Sie das US-Gebietsschema an: String.format(Locale.US,”%.2f”, 4.52135);

    – Alexander233

    22. September 2017 um 20:16 Uhr

  • Ich würde sagen “um den US-Gebietsschema-spezifischen Punkt als Dezimalzeichen zu verwenden, geben Sie das US-Gebietsschema an”. Diese Vorstellung, dass die US-Gewohnheiten die richtigen sind und alles andere eine Art “Volks” -Zeug ist, macht mich verrückt.

    – Simone Gianni

    3. März 2018 um 12:05 Uhr

  • @SimoneGianni Mach keine dummen Annahmen, manche Leute brauchen vielleicht die Dezimalstelle, um ein Punkt zu sein. Zum Beispiel schreibe ich eine Funktion, die ein CSV-Dokument exportiert, und ich kann kein Komma haben, weil das Komma das Trennzeichen ist.

    – Kaiser Keister

    4. Mai 2020 um 0:26 Uhr

Mit String.format können Sie Folgendes tun:

double price = 52000;
String.format("$%,.2f", price);

Beachten Sie das Komma, das dies von der Antwort von @ Vincent unterscheidet

Ausgabe:

$52,000.00

Eine gute Ressource für die Formatierung ist die offiziell Java-Seite zum Thema

1646264231 609 Doppelte Dezimalformatierung in Java
Lewis Robbin

Sie können immer die statische Methode verwenden printf from System.out – Sie würden dann den entsprechenden Formatierer implementieren; das spart Heap-Platz, den Sie bei anderen Beispielen erledigen mussten.

Ex:

System.out.format("%.4f %n", 4.0); 

System.out.printf("%.2f %n", 4.0); 

Spart Heap-Platz, was ein ziemlich großer Bonus ist, dennoch bin ich der Meinung, dass dieses Beispiel viel überschaubarer ist als jede andere Antwort, zumal die meisten Programmierer die printf-Funktion von C kennen (Java ändert die Funktion/Methode jedoch geringfügig).

  • @Baz Fehlt mir hier ein entscheidendes Detail, es wird kein printStream erwähnt. Das OP bittet um Formatierungshilfe (die durch Betrachten der Java-Dokumentation einfacher gelöst werden könnte) für den Standardausgabestream. Erklären.

    – Lewis Robbin

    9. Oktober 2012 um 18:46 Uhr

  • Mein Fehler. Ich habe mir die falsche Javadoc-Version (1.4) angesehen. Übrigens: out ist der PrintStream.

    – Baz

    9. Oktober 2012 um 18:47 Uhr


  • @Baz Keine Sorge. Ja, ich bin davon ausgegangen, dass dies die Klasse ist, auf die Sie sich bezogen haben. In allen meinen Büchern wird printf als statische Methode aus System.out bezeichnet (da diese Methoden statisch sind).

    – Lewis Robbin

    9. Oktober 2012 um 18:47 Uhr


  • Um genau zu sein, printf ist eine statische Methode von PrintStream. Sehen Hier 😉 Aber trotzdem +1.

    – Baz

    9. Oktober 2012 um 18:52 Uhr


  • @Baz Aus den Dokumenten hat die printStream-Klasse System.out geerbt. Ich könnte mich vielleicht irren – obwohl es ziemlich seltsam ist, eine statische Methode zu erben (ist das überhaupt möglich)? Sie sind, ich nehme an, aber richtig.

    – Lewis Robbin

    9. Oktober 2012 um 18:58 Uhr


Doppelte Dezimalformatierung in Java
Michael Silbermann

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));

  • @Baz Fehlt mir hier ein entscheidendes Detail, es wird kein printStream erwähnt. Das OP bittet um Formatierungshilfe (die durch Betrachten der Java-Dokumentation einfacher gelöst werden könnte) für den Standardausgabestream. Erklären.

    – Lewis Robbin

    9. Oktober 2012 um 18:46 Uhr

  • Mein Fehler. Ich habe mir die falsche Javadoc-Version (1.4) angesehen. Übrigens: out ist der PrintStream.

    – Baz

    9. Oktober 2012 um 18:47 Uhr


  • @Baz Keine Sorge. Ja, ich bin davon ausgegangen, dass dies die Klasse ist, auf die Sie sich bezogen haben. In allen meinen Büchern wird printf als statische Methode aus System.out bezeichnet (da diese Methoden statisch sind).

    – Lewis Robbin

    9. Oktober 2012 um 18:47 Uhr


  • Um genau zu sein, printf ist eine statische Methode von PrintStream. Sehen Hier 😉 Aber trotzdem +1.

    – Baz

    9. Oktober 2012 um 18:52 Uhr


  • @Baz Aus den Dokumenten hat die printStream-Klasse System.out geerbt. Ich könnte mich vielleicht irren – obwohl es ziemlich seltsam ist, eine statische Methode zu erben (ist das überhaupt möglich)? Sie sind, ich nehme an, aber richtig.

    – Lewis Robbin

    9. Oktober 2012 um 18:58 Uhr


1646264232 619 Doppelte Dezimalformatierung in Java
Subhrajyoti Majumder

new DecimalFormat("#0.00").format(4.0d);

917310cookie-checkDoppelte Dezimalformatierung in Java

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy