Operações matemáticas com double

3 respostas
J

Pessoal eu tenho o seguinte código:

double d = 100*1.1;
System.out.println(d);

A saida deveria ser 110 porém eu tenho o valor 110.00000000000001 impresso na tela.

Alguém tem alguma explicação para isso??

Obrigado

3 Respostas

maquiavelbona

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4497156

Google keywords: java double precision

Complementando: http://java.sun.com/features/2001/06/floating-point_arithmetic.pdf

Até!

D

jr_klein. Você já ouviu falar de teoria dos erros:

Nem sempre o computador consegue multiplicar os números corretamente. Se vc estudar PO vai entender.

maquiavelbona

Só para facilitar um pouco: Não há como garantir uma precisão infinita com um número limitado de bits, portanto essas “imprecisões” - que na verdade são garantias da especificação IEEE 754 - têm que ser “ignoradas”. Para cálculos mais precisos, a classe BigDecimal é mais apropriada.

Até!

Criado 11 de maio de 2007
Ultima resposta 11 de mai. de 2007
Respostas 3
Participantes 3