Subtraindo dois números decimais dando saídas estranhas [duplicadas]

Esta questão já tem uma resposta aqui:

O que há de errado com esse simples cálculo "duplo"? [duplicado] 5 respostas

Enquanto eu estava me divertindo com os códigos do Java Puzzlers (eu não tenho o livro) me deparei com este pedaço de código

public static void main(String args[]) {
        System.out.println(2.00 - 1.10);
    }

Saída é

0.8999999999999999

Quando tentei mudar o código para

2.00d - 1.10d ainda recebo a mesma saída0.8999999999999999

Para,2.00d - 1.10f Saída é0.8999999761581421
Para,2.00f - 1.10d Saída é0.8999999999999999
Para,2.00f - 1.10f Saída é0.9

Por que não recebo a saída como0.9 em primeiro lugar? Eu não poderia fazer cara ou coroa nisso? Alguém pode articular isso?

questionAnswers(3)

yourAnswerToTheQuestion