Yanıtlar:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
, ancak .
bunun yerine gruplama için kullanılan bölgeler de vardır . Tek kelimeyle, bir yerel ayarı zor kodlamak kötü bir uygulama olarak kabul edilir.
Locale.getCurrent()
yapmak için çözüm
En çabuk istersiniz, ama belki de "en iyi" veya "doğru" veya "tipik" demek istersiniz?
Ayrıca virgüllerin binlerce göstermesini istersiniz, ancak "kullanıcılarınızın yerel geleneklerine göre normal insan tarafından okunabilir formda" demek istersiniz?
Bunu şöyle yapın:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Amerikalılar "35.634.646" alacak
Almanlar "35.634.646" alacak
İsviçre Almanları "35'634'646" alacak
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
tamsayılar:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Çiftler:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
- psuzzi geri bildirimi başına düzenlendi .
String.format
. O ile başlayan return new Formatter(l) ...
çöp toplayıcı argüman göründüğü itibariyle güçlü değil Yani vb.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Çıktı: 35,634,646
#,###
o zaman kullanabilirsiniz biçimlendirme avrupa tarzı istiyorsanız, #,##,###
.
,
.
Diğer yanıtlar doğrudur, ancak kullanmadan önce yerel ayarınızı iki kez kontrol edin "%,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);
Sonuç:
35,634,646
35 634 646
%d
Biçim belirtecini virgülle kullanın :%,d
Bu en kolay yol.
Aynı şeyin JSP'de yapılması gerekiyorsa, şunu kullanın:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
birden çok değer kullanımı için tabii:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
"numberformat" ya da "String.format" a erişemeyenler için (bir çerçeve içinde java'nın sınırlı bir sürümünü kullanarak) bir çözüm bulabilirsiniz. Umarım faydalıdır.
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
Uzantıyı kullan
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)
sonuç
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
kullanamaz mısın
System.out.printf("%n%,d",int name);
İçindeki virgül printf
, virgüllerin arasına virgül eklemelidir %d
.
Bu konuda olumlu değil, ama benim için çalışıyor.
import java.text.NumberFormat;
.