Número com casas decimais

3 respostas
java
A

Conforme exemplo da foto, estou precisando muito converter uma string com o valor 504.456.84 para um double, estou usando o NumberFormat e não esta dando certo pois ele esta retornando o valor sem a casas decimais, como eu faço para retornar o valor em double dessa forma 504.456.84?

3 Respostas

Italo_Alves2
Não da pra converter esse valor porque o double não aceita essa precisão.

Você pode usar BigDecimal, Long.

String a = 504.456.84;	

NumberFormat nf = NumberFormat.getInstance();

BigDecimal bd = BigDecimal.valueOf(nf.parse(a).doubleValue());
A

O problema no código que você passou é com a string de entrada. Infelizmente o método parse é meio leniente e ao invés de lançar uma exception converte pro valor errado.
O correto seria "504,456.84" com vírgula como separador de milhares.

A

Toma cuidado com isso. Quando você chama o .doubleValue() você já tem um double e perdeu a precisão que queria. É mais garantido usar o construtor do BigDecimal que recebe string, para preservar a precisão que você quer.

Criado 2 de março de 2020
Ultima resposta 2 de mar. de 2020
Respostas 3
Participantes 3