Antworten:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
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ösung
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);
Amerikaner werden "35.634.646" bekommen
Deutsche bekommen "35.634.646"
Schweizer Deutsche bekommen "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Ganzzahlen:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Doppel:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format ist ziemlich mächtig.
- Bearbeitet per psuzzi Feedback.
String.format
. Es beginnt mit return new Formatter(l) ...
usw. Das Garbage Collector-Argument ist also nicht so stark, wie es scheint.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Ausgabe: 35,634,646
#,###
, 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"
:
Locale.setDefault(Locale.US);
int bigNumber = 35634646;
String formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Locale.setDefault(new Locale("pl", "PL"));
formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Ergebnis:
35,634,646
35 634 646
Verwenden Sie den %d
Formatbezeichner mit einem Komma:%,d
Dies ist bei weitem der einfachste Weg.
Wenn dasselbe in der JSP gemacht werden muss, verwenden Sie:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
Natürlich für mehrere Werte verwenden:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
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.
number= 123456789;
thousandsSeparator=",";
myNumberString=number.toString();
numberLength=myNumberString.length;
howManySeparators=Math.floor((numberLength-1)/3)
formattedString=myNumberString.substring(0,numberLength-(howManySeparators*3))
while (howManySeparators>0) {
formattedString=formattedString+thousandsSeparator+myNumberString.substring(numberLength-(howManySeparators*3),numberLength-((howManySeparators-1)*3));
howManySeparators=howManySeparators-1; }
formattedString
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)
Ergebnis
1234.commaString => 1,234
"1234.456".commaString => 1,234.456
1234567890123456789.commaString => 1,234,567,890,123,456,789
1234.456.commaString => 1,234.456
Kannst du nicht ein
System.out.printf("%n%,d",int name);
Das Komma in printf
sollte die Kommas in das einfügen%d
Inter .
Nicht positiv, funktioniert aber für mich.
import java.text.NumberFormat;
.