Ajuda Com NumberFormat

Olá eu estou tentando usar o NumberFormat para formatar a saída de um resultado para um cliente eu criei um método para isso que está funcionando parcialmente, ele formata normal mas quando eu preciso fazer a operação inversa para obter o numero double original está dando paupublic double retornaValor(String valor){ double total = 0; try { Locale ptBr = new Locale("pt", "BR"); NumberFormat moedaFormat = NumberFormat.getCurrencyInstance(ptBr); //para moedas double moeda = 0; moeda = (Double)(moedaFormat.parse(valor)); System.out.println(moeda); } catch (ParseException ex) { Logger.getLogger(Validacoes.class.getName()).log(Level.SEVERE, null, ex); } return total; }se eu passo um valor assim: 12,01 ele funciona perfeitamente, mas se e passo 12,00 cai numa exceçãoException in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double at Teste.Teste.main(Teste.java:66) Java Result: 1 não entendi porque ele está intepretando o número como long se eu estou fazendo o casting para double, alguém pode me ajudar por favor

Você já viu o que o parse retorna? 8)

O que acontece é que o código:

deve ser porque o moedaFormat.parse(valor) é inteligente suficiente para saber que 12,00 pode ser convertido em um Long, e nao precisa de um Double. A hora que voce faz cast do Long para o Double da problema
Talvez voce possa usar os metodos do wrapper double:

double exemplo = Double.parseDouble(valor);

Abraço!

ah! Use o format para formatar o Double que voce converteu depois.
Não sei se vai resolver, mas é uma tentativa