Double arredondando errado

5 respostas
eduardoluiz.ribeiro

Olá galera, estou pegando um valor do tipo double do meu bd só que ele está uma coisa no bd e quando eu vou exibi-lo na minha página ele da o valor aproximado. por exemplo se o valor for 33.3 ele retorna 33.300000000000004 bom com resolvo isso? e pq esta acontecendo?
eu pego o valor do bd com rs.getDouble

5 Respostas

abelgomes

mas qaundo vc add no banco ele fica como?33.3?

M

Bom dia Eduardo.

Uma solução é utilizar a classe DecimalFormat, conforme exemplo abaixo:

double valor = 33.300000000000004; NumberFormat nf = new DecimalFormat("0.00"); System.out.println(nf.format(valor));
Verifique que o método format retorna um String.

Caso necessite realizar cálculos financeiros ou uma grande precisão, recomendo utilizar a classe BigDecimal para resgatar estes valores do banco de dados.

Até mais!

eduardoluiz.ribeiro

sim fica, eu add até pelo bd mesmo fui na tabela, na linha e adicionei o 33,3 (para testar se ia dar alguma diferença) e conferi, ainda sim fica o mesmo valor 33,000…

abelgomes

blz…mas se vc add pelo sistema e ele ficar 33.3…entao usa essa solução ai que o mtosatti deu…se nao posta ai qual SGBD vc ta usando…

eduardoluiz.ribeiro

opa galera resolvido, valew a ajuda, só que eu queria entender o pq aconteceu isso, mas ja ta resolvido valew a força galera

Criado 29 de dezembro de 2008
Ultima resposta 29 de dez. de 2008
Respostas 5
Participantes 3