Soma do float não é exata [fechada]

Considere o seguinte programa C ++:

#include <iostream>
using std::cout;
using std::endl;

int main () {
   float x = 0.0001;
   float y = 0;
   for (int i=0; i < 10000; i++) {
      y += x;
   }
   cout << y << endl;
   return 0;
}

Compile e execute este programa e responda às seguintes perguntas: Como o comportamento real deste programa difere de seu comportamento esperado?

Por que o comportamento esperado não é visto?

Embora garanta que a semântica do programa permaneça a mesma, quais alterações você faria nesse programa para garantir que o comportamento esperado e o comportamento real coincidam?

O acima é minha tarefa. Eu sei que devo fazer o meu dever de casa, mas estou preso.

Para a parte a) eu simplesmente disse que os 2 números são diferentes.

Para a parte c) eu fiz o float em um duplo. (Eu acho que a semântica permanece a mesma)

Para a parte b) eu sei que isso é chamado de cancelamento catastrófico, mas o professor provavelmente quer ver mais do que isso e não tenho a menor idéia do que mais dizer. Alguém pode me ajudar?

Obrigado pela ajuda