Java: Qual é a maneira certa de converter string em uma quantia válida de dinheiro (BigDecimal)

StackOverflow https://stackoverflow.com/questions/2603167

  •  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,

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top