Perda de precisão ao utilizar NumberFormat

2 respostas
tiagolpadua

Já pesquisei em tudo que é lugar e não consegui encontrar a resposta para a perda de precisão que ocorre no código abaixo:

System.out.println(o.valor.get());               System.out.println(NumberFormat.getCurrencyInstance().format(o.valor.get()));

saída:
520000.1
R$ 520.000,09

=================
o.valor.get() retorna um Float (objeto não primitivo), de onde pode ter vindo a diferença de um centavo?

poderia ser um problema de arredondamento se o.valor.get() possuisse um valor com mais de 2 casas decimais, mas isto não ocorre.

2 Respostas

tiagolpadua

sendo um pouco mais claro:

System.out.println(520000.1);
Float f=new Float(520000.1); System.out.println(NumberFormat.getCurrencyInstance().format(f));

saídas:
520000.1
R$ 520.000,09

ISTO TA ME DEIXANDO LOUCO

pcalcado

1 - Use BigDecimal, Float não é feito para este tipod e cálculo
2 - Por favor, antes de perguntar, leia este topico:
http://www.guj.com.br/posts/list/15477.java
3 - Por favor não crie dois dópicos iguais

Criado 2 de agosto de 2005
Ultima resposta 2 de ago. de 2005
Respostas 2
Participantes 2