Como definir o separador de milhares em Java?
Eu tenho representação String de um BigDecimal que eu quero formatar com um separador de milhares e retornar como String.
java
bigdecimal
Tempo de diversão
fonte
fonte
Respostas:
Isso deve funcionar (não testado, com base no JavaDoc):
De acordo com o JavaDoc, o elenco na primeira linha deve ser salvo para a maioria das localidades.
fonte
getDecimalFormatSymbols()
diz:Returns: a copy of the desired DecimalFormatSymbols
. Então você deve usarsetDecimalFormatSymbols(theCopy)
depois de alterar a cópia.new
e configurá-lo novamente para o formatador:DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
Você pode usar a função de formatação com ",";
"," inclui caracteres de agrupamento específicos do código do idioma.
docs
fonte
.
como separador?format()
com um local explícita (Local.US
é conhecida a utilização,
como um separador) e, em seguida, substituir,
com o seu separador personalizado:String.format(Locale.US, "%,d", n).replace(',', '.')
.int
. Ou along
. Ou aBigInteger
. E use f se quiser usardouble
,float
ouBigDecimal
.EDITAR
Para obter um separador de agrupamento personalizado, como espaço, faça o seguinte:
fonte
NumberFormat
objeto com as propriedades desejadas e o usa para formatar o seuBigDecimal
. UmBigDecimal
tem apenas um valor especificado, não possui um formato especificado.tente este código para formatar como usado no Brasil:
fonte
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
Envie este parâmetro para o relatório.Se você estiver usando o separador de milhar para o tipo de dados Inteiro, use 1.
String.format ("%, d \ n", 58625) e a saída será 58.625
fonte
fonte
fonte
A resposta aceita deve ser realmente alterada, caso contrário não funcionará. O getDecimalFormatSymbols faz uma cópia defensiva. Portanto,
A nova linha é esta: formatter.setDecimalFormatSymbols (symbols);
fonte
Para decimais :
fonte
Como mencionado acima, o link a seguir fornece o código do país específico para permitir que o Java localize o número. Todo país tem seu próprio estilo.
No link acima, você encontrará o código do país que deve ser colocado aqui:
A Suíça, por exemplo, formata os números da seguinte forma:
1000,00 -> 1'000,00
Código do país
Para conseguir isso, os seguintes códigos funcionam para mim:
O resultado é o esperado:
fonte
fonte