Operações matemáticas com double

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

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é!

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.

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é!