Erro com DecimalFormat

1 resposta
Schoker

Bom dia pessoal…

Meu problema é esse:

Eu tenho um decimalFormat declarado da seguinte forma:

DecimalFormat df = new DecimalFormat(",##0.00");

ele formata corretamente qualqer numero abaixo de 1000…

mas quando chega em um numero maior q mil ele da esse erro:

java.lang.NumberFormatException: multiple points

e exibo o numero assim na tela: (ex) 2,368,90

creio q esse multiple points seja por causa das virgulas…

segue abaixo meu codigo:

DecimalFormat df = new DecimalFormat(",##0.00");

PanelTabelaFormaPag.tfValorTotal.setText(df.format(Double.parseDouble(PanelTabelaFormaPag.tfValorTotal.getText().replace(".","").replace(",", "."))+Double.parseDouble(tfValorUnitario.getText().replace(".","").replace(",", "."))*Double.parseDouble(tfQuantidade.getText().replace(".","").replace(",", "."))));

Como faço pra concertar esse erro?
Desde já agradeço!

1 Resposta

E

Você tem de usar o seguinte DecimalFormat, se quiser imprimir algo como “12.345.678,99” (é assim mesmo?)

Locale ptBR = new Locale ("pt", "BR");
DecimalFormat df = new DecimalFormat ("#,##0.00", ptBR);

Uma vírgula nunca pode ficar sozinha, como você fez. Para ele usar os pontos e vírgulas, não precisa usar esse monte de replaces, já que ele deve fazer direitinho se você usar o locale correto. E você não precisa usar parseDouble, mas parse do DecimalFormat. Como parse retorna um Number, não um double diretamente, você deve fazer algo com:

double preco = df.parse ("12.345,67").doubleValue(); // não esqueça de usar o try/catch (ParseException) aqui

“Concertar” != “Consertar”.

Consertar (“to fix”) é remover o erro (que é o que você quer fazer). “Consertei a torneira da pia da cozinha porque ela estava vazando”.
Concertar (“to concert”) é promover um acordo, “Os países desenvolvidos concertaram um acordo de cooperação mútua”.

Criado 14 de junho de 2010
Ultima resposta 14 de jun. de 2010
Respostas 1
Participantes 2