Eu tenho um BigDecimal
campo amount
que representa o dinheiro, e eu preciso imprimir o seu valor no navegador em um formato como $123.00
, $15.50
, $0.33
.
Como eu posso fazer isso?
(A única solução simples que eu me vejo está recebendo floatValue
a partir de BigDecimal
e em seguida, usando NumberFormat
para fazer precisão de dois dígitos para a parte de fração).
Para definir o separador de milhar, digamos que
123,456.78
você precise usar DecimalFormat :Aqui está o resultado:
Embora eu tenha definido a
#,###.00
máscara, ela formata com sucesso os valores mais longos também. Observe que o separador de vírgula (,) no resultado depende de sua localidade. Pode ser apenas espaço () para a localidade russa.fonte
"#,##0.00"
.Outra forma que pode fazer sentido para a situação dada é
Só digo isso porque, em alguns casos, quando se trata de dinheiro, ir além de 2 casas decimais não faz sentido. Indo um passo adiante, isso pode levar a
mas eu apenas queria destacar o método setScale (que também pode usar um segundo argumento de modo de arredondamento para controlar como a última casa decimal é tratada. Em algumas situações, Java força você a especificar esse método de arredondamento).
fonte
// imprime 3,14
// imprime 13
fonte
Semelhante à resposta de @Jeff_Alieffson, mas não contando com o padrão
Locale
:Use
DecimalFormatSymbols
para localidade explícita:Ou símbolos separadores explícitos:
Então:
Resultado:
fonte
fonte