Ich musste hinzufügen import java.text.NumberFormat;.
Mike S
6
Dies erzwingt die Gruppierung im US-Stil, die immer verwendet ,wird. Es gibt jedoch auch Regionen, die stattdessen .zur Gruppierung verwendet werden. Mit einem Wort, das Hardcodieren eines Gebietsschemas wird als schlechte Praxis angesehen.
Hai Zhang
4
@ DreaminginCode Um es gut zu machen, Locale.getCurrent()ist die Lösung
Roger RV
@ RogerRV Es gibt kein Locale.getCurrent () (zumindest auf Android)
E.Akio
Ja, dies ist nicht die beste Antwort für 96% der Menschen, die nicht in den USA leben
Abb.
152
Sie fragen nach dem Schnellsten, aber vielleicht meinen Sie "am besten" oder "richtig" oder "typisch"?
Sie fragen auch nach Kommas, um Tausende anzuzeigen, aber vielleicht meinen Sie "in normaler, von Menschen lesbarer Form gemäß der lokalen Gewohnheit Ihres Benutzers"?
Du machst es so:
int i =35634646;String s =NumberFormat.getIntegerInstance().format(i);
Ihr Muster muss nicht größer sein als #,###, wenn Sie eine Formatierung im europäischen Stil wünschen, können Sie es verwenden #,##,###.
Ali
7
@Ali: Das von Ihnen beschriebene Format wird nur in Indien verwendet, und ich bin mir zu mindestens 90% sicher, dass Indien nicht in Europa ist.
Cairnarvon
Ich verstehe ... gut, wenn Sie eine indische Formatierung benötigen, dann machen Sie das so.
Ali
1
Dies ist vom Gebietsschema abhängig und führt nicht zur korrekten Ausgabe (gemäß Frage), wenn es ausgeführt wird, bei dem das Standardgebietsschema nicht Tausende durch a trennt ,.
Antak
17
Die anderen Antworten sind korrekt. Überprüfen Sie jedoch Ihr Gebietsschema, bevor Sie Folgendes verwenden "%,d":
Hier ist eine Lösung für diejenigen unter Ihnen, die weder auf "numberformat" noch auf "String.format" zugreifen können (unter Verwendung einer eingeschränkten Java-Version innerhalb eines Frameworks). Hoffe es ist nützlich.
Überlegen Sie, ob Sie Ihre Antwort bearbeiten möchten, indem Sie Ihrem Code einige Kommentare hinzufügen (und ihn möglicherweise in eine Methode
einschließen
0
Verwenden Sie die Erweiterung
import java.text.NumberFormat
val Int.commaString:String
get()=NumberFormat.getInstance().format(this)
val String.commaString:String
get()=NumberFormat.getNumberInstance().format(this.toDouble())
val Long.commaString:String
get()=NumberFormat.getInstance().format(this)
val Double.commaString:String
get()=NumberFormat.getInstance().format(this)
import java.text.NumberFormat;
.,
wird. Es gibt jedoch auch Regionen, die stattdessen.
zur Gruppierung verwendet werden. Mit einem Wort, das Hardcodieren eines Gebietsschemas wird als schlechte Praxis angesehen.Locale.getCurrent()
ist die LösungSie fragen nach dem Schnellsten, aber vielleicht meinen Sie "am besten" oder "richtig" oder "typisch"?
Sie fragen auch nach Kommas, um Tausende anzuzeigen, aber vielleicht meinen Sie "in normaler, von Menschen lesbarer Form gemäß der lokalen Gewohnheit Ihres Benutzers"?
Du machst es so:
Amerikaner werden "35.634.646" bekommen
Deutsche bekommen "35.634.646"
Schweizer Deutsche bekommen "35'634'646"
quelle
quelle
Ganzzahlen:
Doppel:
String.format ist ziemlich mächtig.
- Bearbeitet per psuzzi Feedback.
quelle
String.format
. Es beginnt mitreturn new Formatter(l) ...
usw. Das Garbage Collector-Argument ist also nicht so stark, wie es scheint.Ausgabe:
35,634,646
quelle
#,###
, wenn Sie eine Formatierung im europäischen Stil wünschen, können Sie es verwenden#,##,###
.,
.Die anderen Antworten sind korrekt. Überprüfen Sie jedoch Ihr Gebietsschema, bevor Sie Folgendes verwenden
"%,d"
:Ergebnis:
quelle
Diese Lösung hat bei mir funktioniert:
quelle
Verwenden Sie den
%d
Formatbezeichner mit einem Komma:%,d
Dies ist bei weitem der einfachste Weg.
quelle
Wenn dasselbe in der JSP gemacht werden muss, verwenden Sie:
Natürlich für mehrere Werte verwenden:
quelle
Hier ist eine Lösung für diejenigen unter Ihnen, die weder auf "numberformat" noch auf "String.format" zugreifen können (unter Verwendung einer eingeschränkten Java-Version innerhalb eines Frameworks). Hoffe es ist nützlich.
quelle
Verwenden Sie die Erweiterung
Ergebnis
quelle
Kannst du nicht ein
Das Komma in
printf
sollte die Kommas in das einfügen%d
Inter .Nicht positiv, funktioniert aber für mich.
quelle
Zuerst müssen Sie die JSTL-Tags einschließen: -
am Anfang der Seite
quelle