¿Cómo configurar el separador de miles en Java?
Tengo una representación de String de un BigDecimal que quiero formatear con un separador de miles y devolver como String.
java
bigdecimal
Funtime
fuente
fuente
Respuestas:
Esto debería funcionar (no probado, basado en JavaDoc):
Según JavaDoc, el reparto en la primera línea debe guardarse para la mayoría de las configuraciones regionales.
fuente
getDecimalFormatSymbols()
dice:Returns: a copy of the desired DecimalFormatSymbols
. Por lo tanto, debe usarsetDecimalFormatSymbols(theCopy)
después de alterar la copia.new
y configurarlo de nuevo en formateador:DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
Puede usar la función de formato con ",";
"," incluye caracteres de agrupación específicos de la localidad.
docs
fuente
.
como separador?format()
con una configuración regional explícita (Local.US
se sabe que el uso,
como separador) y luego vuelva a colocar,
con su separador personalizado:String.format(Locale.US, "%,d", n).replace(',', '.')
.int
. O along
. O aBigInteger
. Y use f si quiere usardouble
,float
oBigDecimal
.EDITAR
Para obtener un separador de agrupación personalizado como el espacio, haga esto:
fuente
NumberFormat
objeto con las propiedades deseadas y lo usa para formatear suBigDecimal
. ABigDecimal
solo tiene un valor especificado, no tiene un formato especificado.pruebe este código para formatear como se usa en Brasil:
fuente
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
envíe este parámetro para informar.Si está utilizando un separador de miles para el tipo de datos Entero, use 1.
String.format ("%, d \ n", 58625) y el resultado será 58,625
fuente
fuente
fuente
La respuesta aceptada tiene que modificarse realmente, de lo contrario no funcionará. Los getDecimalFormatSymbols hace una copia defensiva. Así,
La nueva línea es esta: formatter.setDecimalFormatSymbols (símbolos);
fuente
Para decimales :
fuente
Como se mencionó anteriormente, el siguiente enlace le proporciona el código de país específico para permitir que Java localice el número. Cada país tiene su propio estilo.
En el enlace de arriba encontrará el código de país que debe colocarse aquí:
Suiza, por ejemplo, formatea los números de la siguiente manera:
1000.00 -> 1'000.00
código de país
Para lograr esto, los siguientes códigos me funcionan:
El resultado es el esperado:
fuente
fuente