DecimalFormat ajuda!

galera tenhu um valor que voltou do banco em String, preciso passar por um DecimalFormat para adicionar a virgula e depois enviar para outra tabela, porém essa outra só aceita valores BigDecimal o.0

eu fiz:

		   DecimalFormat formatacaoDecimal = new DecimalFormat("0.00");
		   BigDecimal valor = new BigDecimal((Long) formatacaoDecimal.parse(valorTarifaBancaria));

mas ele não coloco a virgula… ¬¬

alguém poderia me dar uma luz?? :smiley:

Como é que seu cast para Long funcionou? Não deveria nem funcionar.

De qualquer forma, o correto é fazer o seguinte:

 DecimalFormat formatacaoDecimal = new DecimalFormat("0.00");  
 formatacaoDecimal.setParseBigDecimal (true);
 BigDecimal valor = (BigDecimal) formatacaoDecimal.parse(valorTarifaBancaria);

[quote=thingol]Como é que seu cast para Long funcionou? Não deveria nem funcionar.

Outro nível né? 8)

hueheuehueheueheuh

bah thiago, ele mando pro banco sem a virgula o.0
da mesma maneira que o meu anterior :?

Perguntinha. Qual é o valor de “valorTarifaBancaria”? É “14.45” ou “14,45” (ou seja, tem ou não tem vírgulas)?

Quando você usa DecimalFormat, sem passar DecimalFormatSymbols, então você está usando o default do seu Java, que pode depender do seu ambiente se vai usar “,” ou “.”.

Para ter certeza que vai funcionar direitinho se for o caso “14,45” (ou seja, com vírgula), não dependendo se a sua máquina está com Windows (ou Linux) em inglês ou português ou japonês ou croata ou zulu ou xhosa, faça isto aqui:

 DecimalFormat formatacaoDecimal = new DecimalFormat("0.00", new DecimalFormatSymbols (new Locale ("pt", "BR")));
 formatacaoDecimal.setParseBigDecimal (true);  

O valor que retorna é: 150
e tem que ser 1.50

ok vo tenta :slight_smile:

Vou fazer mais uma perguntinha.
O valor original é uma string “150”, “1.50” ou “1,50”?
Se for “150”, então você é que tem de transformar o valor de centavos para reais (ou seja, dividir o valor por 100). DecimalFormat depende de você pôr a vírgula ou o ponto no lugar certo; ele não tem como adivinhar que você quer dividir por 100.