Respuestas:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,, sin embargo, también hay regiones que usan .para la agrupación. En una palabra, codificar un entorno local se considera una mala práctica.
Locale.getCurrent()es la solución
¿Pide el más rápido, pero quizás quiere decir "mejor" o "correcto" o "típico"?
También solicita comas para indicar miles, pero ¿tal vez quiere decir "en forma normal legible por humanos de acuerdo con la costumbre local de su usuario"?
Lo haces así:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Los estadounidenses obtendrán "35,634,646"
Los alemanes obtendrán "35.634.646"
Los alemanes suizos obtendrán "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Enteros:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Dobles:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format es bastante poderoso.
- Editado por retroalimentación psuzzi .
String.format. Comienza con return new Formatter(l) ...etc. Así que el argumento del recolector de basura no es tan fuerte como parece.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Salida: 35,634,646
#,###, si desea un formato de estilo europeo, puede usarlo #,##,###.
,.
Las otras respuestas son correctas, sin embargo, verifique su ubicación 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 el %despecificador de formato con una coma:%,d
Esta es, con mucho, la forma más fácil.
Si se debe hacer lo mismo en el JSP, use:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
por supuesto para el uso de valores múltiples:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
Aquí hay una solución para aquellos de ustedes que no pueden acceder a "numberformat" ni a "String.format" (usando una versión limitada de java dentro de un framework). Espero que sea ú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
usar extensión
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
no puedes usar un
System.out.printf("%n%,d",int name);
La coma en el printfdebería agregar las comas en el %dinter.
No es positivo al respecto, pero funciona para mí.
import java.text.NumberFormat;.