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.