Respostas:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
, no entanto, também existem regiões que usam .
para agrupar. Em uma palavra, codificar um código de idioma é considerado uma prática ruim.
Locale.getCurrent()
é a solução #
Você pede o mais rápido, mas talvez você queira dizer "melhor" ou "correto" ou "típico"?
Você também pede vírgulas para indicar milhares, mas talvez você queira dizer "na forma legível humana normal, de acordo com o costume local do seu usuário"?
Você faz assim:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Os americanos receberão "35.634.646"
Alemães receberão "35.634.646"
Alemães suíços receberão "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Inteiros:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Duplas:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format é bastante poderoso.
- Editado por feedback do psuzzi .
String.format
. Começa com return new Formatter(l) ...
etc. Portanto, o argumento do coletor de lixo não é tão forte quanto parece.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Resultado: 35,634,646
#,###
, se você deseja formatar o estilo europeu, poderá usá-lo #,##,###
.
,
.
As outras respostas estão corretas; no entanto, verifique seu código do idioma antes de usar "%,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);
Resultado:
35,634,646
35 634 646
Use o %d
especificador de formato com uma vírgula:%,d
Esta é de longe a maneira mais fácil.
Se o mesmo precisar ser feito no JSP, use:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
curso para múltiplos valores use:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
aqui está uma solução para aqueles que não conseguem acessar "numberformat" nem "String.format" (usando uma versão limitada do java dentro de uma estrutura). Espero que seja útil.
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
use Extension
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)
resultado
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
você não pode usar um
System.out.printf("%n%,d",int name);
A vírgula no printf
deve adicionar as vírgulas no %d
inter.
Não é positivo, mas funciona para mim.
import java.text.NumberFormat;
.