Sie können auch ein bestimmtes Gebietsschema verwenden, indem SieString.format(Locale.GERMAN, "%1$,.2f", myDouble);
Olivier Grégoire
13
Wenn mehr als ein Double formatiert werden muss, verwenden Sie% 1,% 2 usw. Zum Beispiel String.format ("% 1 $,. 2f,% 2 $,. 2f", myDouble, aDouble)
Moesio
4
Ich glaube, dass "% 1 $" in diesem Fall optional ist. Funktioniert bei mir nur mit "%, 2f" als Formatzeichenfolge.
Matt Passell
5
Ja, Matt hat recht. %1, %2usw. können verwendet werden, um die Ausgabe basierend auf dem Index Ihrer Eingabeargumente neu zu ordnen. Sehen Sie das . Sie können den Index weglassen und die Standardreihenfolge wird vom Formatierer übernommen.
Praneetloke
1
Sie sollten eine Erklärung geben, was die verschiedenen Teile bedeuten.
Mitulát báti
41
String.format("%4.3f", x);
Dies bedeutet, dass wir insgesamt 4 Stellen in ans benötigen, von denen 3 nach der Dezimalstelle stehen sollten. Und f ist der Formatbezeichner von double. x bedeutet die Variable, für die wir sie finden möchten. Hat für mich gearbeitet. . .
Ich denke, es bedeutet, dass es die vierte Variable in den folgenden Argumenten sein wird und 3 Stellen nach der Dezimalstelle hat.
Michael Fulton
@MichaelFulton Es ist nicht so einfach: String.format("%014.3f" , 58.656565)-> 0000000058,657: 14 Symbole insgesamt: 8 Nullen und 5 Zahlen und 1 Komma. In diesem Fall 14bedeutet Zahl die Gesamtzahl der Symbole (zusätzliche werden durch führende Null ersetzt, könnten ohne auskommen, dann würde sie durch Leerzeichen ersetzt werden) in der Ergebniszeichenfolge . Der .3Teil ist hier völlig unabhängig.
Parsecer
Allerdings hier: String.format("%014.3f" , 58.656565)-> 58,657. Ich nehme es, weil der Teil bevorzugt wird .3f: Es druckt zuerst die Zahl mit 3 Dezimalstellen und danach, wenn noch Symbole übrig sind , führende Leerzeichen (oder Nullen / was auch immer). In diesem Fall ist die Zahl 2 + 3 + 1 = 6 Symbole und wir wollten nur 4 drucken, daher gibt es sicherlich keine zusätzlichen Leerzeichen.
Parsecer
24
Wenn Sie es mit manuell festgelegten Symbolen formatieren möchten, verwenden Sie Folgendes:
Nützliche Antwort! Der letzte Satz "Gebietsschema-basierte Formatierung wird jedoch bevorzugt" ist ohne Kontext nicht sinnvoll. Es gibt ziemlich gute Anwendungsfälle, in denen Sie KEINE auf dem Gebietsschema basierende Formatierung verwenden sollten, wenn Sie ein bestimmtes Format des Strings generieren möchten. Sie implementieren beispielsweise den Export Ihrer Daten in eine externe Datei und möchten die vollständige Kontrolle über das Format haben, unabhängig vom aktuellen (oder einem beliebigen) Gebietsschema.
String.format(Locale.GERMAN, "%1$,.2f", myDouble);
%1, %2
usw. können verwendet werden, um die Ausgabe basierend auf dem Index Ihrer Eingabeargumente neu zu ordnen. Sehen Sie das . Sie können den Index weglassen und die Standardreihenfolge wird vom Formatierer übernommen.Dies bedeutet, dass wir insgesamt 4 Stellen in ans benötigen, von denen 3 nach der Dezimalstelle stehen sollten. Und f ist der Formatbezeichner von double. x bedeutet die Variable, für die wir sie finden möchten. Hat für mich gearbeitet. . .
quelle
String.format("%014.3f" , 58.656565)
->0000000058,657
: 14 Symbole insgesamt: 8 Nullen und 5 Zahlen und 1 Komma. In diesem Fall14
bedeutet Zahl die Gesamtzahl der Symbole (zusätzliche werden durch führende Null ersetzt, könnten ohne auskommen, dann würde sie durch Leerzeichen ersetzt werden) in der Ergebniszeichenfolge . Der.3
Teil ist hier völlig unabhängig.String.format("%014.3f" , 58.656565)
->58,657
. Ich nehme es, weil der Teil bevorzugt wird.3f
: Es druckt zuerst die Zahl mit 3 Dezimalstellen und danach, wenn noch Symbole übrig sind , führende Leerzeichen (oder Nullen / was auch immer). In diesem Fall ist die Zahl 2 + 3 + 1 = 6 Symbole und wir wollten nur 4 drucken, daher gibt es sicherlich keine zusätzlichen Leerzeichen.Wenn Sie es mit manuell festgelegten Symbolen formatieren möchten, verwenden Sie Folgendes:
Eine auf dem Gebietsschema basierende Formatierung wird jedoch bevorzugt.
quelle
aus diesem Link extrahierter Code ;
Die Ausgabe dieses Beispiels zeigt, wie sich das Format derselben Nummer mit dem Gebietsschema ändert:
quelle
Und ausdrucken:
quelle
Es gibt viele Möglichkeiten, dies zu tun. Diese sind unten angegeben:
Angenommen, Ihre ursprüngliche Nummer ist unten angegeben: doppelte Nummer = 2354548.235;
Verwenden
NumberFormat
und RundungsmodusVerwenden des String-Formatierers
In allen Fällen lautet die Ausgabe : 2354548.24
Hinweis :
Während des Rundens können Sie
RoundingMode
Ihren Formatierer hinzufügen . Hier sind einige der unten angegebenen Rundungsmodi :Hier sind die Importe :
quelle
Verwenden
DecimalFormat
quelle