Obtención de una respuesta incorrecta en doble aritmética en Java [duplicado]

Posible duplicado:
Cálculo doble que produce un resultado impar.

Estoy escribiendo un programa en Java que trata con mucha aritmética doble. Finalmente llego al punto en el que necesito agregar 0.6666666666666666 y -0.66666666666666667. Sin embargo, la respuesta que obtengo es -3.3306690738754696E-16.

En otras palabras,

double d1 = 0.6666666666666666;
double d2 = -0.666666666666667;
System.out.println(d1 + d2);

imprime "-3.3306690738754696E-16". ¿Por qué está pasando esto?

Gracias de antemano.

Respuestas a la pregunta(2)

Su respuesta a la pregunta