Porque é dizima - doouble

Pq nesse resultado é uma dizima e não 0.2?!

public class ClasseA {

public static void main(String[] args) {

	double valor = 3.2 - 3.0;
	System.out.println(valor);;


}

}

resultado final: 0.20000000000000018

é…realmente operações aritimeticas com números de ponto flutuante podem trazer problemas…
esse tópico é abordado de maneira bastante interessante no livro Java Effetive, mas para esclarecer mesmo pode dar uma olhada neste post…muito bom…

http://www.j2eebrasil.com.br/mostrar/47

Esta seria uma possível solução…

BigDecimal d1 = new BigDecimal("1.95");
BigDecimal d2 = new BigDecimal("1.03");

System.out.println(d1.subtract(d2));

[]'s

Luciano