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