Número com casas decimais

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?

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());

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.

1 curtida

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.