Java: Qual é a maneira certa de converter string em uma quantia válida de dinheiro (BigDecimal)
-
25-09-2019 - |
Pergunta
Eu tenho que converter um campo de string de entrada em um campo BigDecimal que representaria uma quantia válida de dinheiro, por exemplo:
String amount = "1000";
BigDecimal valid_amount = convert(amount);
print(valid_amount.toString())//1000.00
Qual é a API certa para usar converter uma string em uma quantia válida de dinheiro em Java (por exemplo: Biblioteca Apache Commons)?
Desde já, obrigado,
Solução
Que tal o BigDecimal(String)
construtor?
String amount = "1000";
BigDecimal validAmount = new BigDecimal(amount);
System.out.println(validAmount); // prints: 1000
Se você deseja formatar a saída de maneira diferente, use o Formatter
classe.
Outras dicas
Você pretendeu alcançar o seguinte:?
NumberFormat nf = NumberFormat.getCurrencyInstance();
System.out.println(nf.format(new BigDecimal("1000")));
Resultado
$1,000.00
Usar new BigDecimal(strValue)
.
Economizará uma enorme dor e sofrimento resultantes de O construtor maligno do mal
Existe o Joda-Money Biblioteca para lidar com valores de dinheiro. Mas, de acordo com o site, "a versão atual do desenvolvimento destinada ao feedback e não ao uso da produção".
Se você deseja imprimir decimal, use o método SetScale
String amount = "1000";
BigDecimal validAmount = new
BigDecimal(amount).setScale(2,RoundingMode.CEILING);
System.out.println(validAmount); // prints: 1000.00