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 %d
especificador 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 printf
debería agregar las comas en el %d
inter.
No es positivo al respecto, pero funciona para mí.
import java.text.NumberFormat;
.