次の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;
}
このプログラムをコンパイルして実行し、次の質問に答えてください。このプログラムの実際の動作は、予想される動作とどのように異なりますか?
期待される動作が見られないのはなぜですか?
プログラムのセマンティクスが同じままであることを確認しながら、期待される動作と実際の動作が一致するように、このプログラムにどのような変更を加えますか?
上記は私の割り当てです。私は自分で宿題をすることになっていることを知っていますが、行き詰まっています。
パートa)については、2つの数字が異なると単純に言いました。
パートc)フロートをダブルにしました。(セマンティクスは同じままだと思います)
パートb)については、これが壊滅的なキャンセルと呼ばれることを知っていますが、教授はおそらくそれ以上のものを見たいと思っており、他に何を言うべきかわかりません。誰かが私を助けることができますか?
ご協力いただきありがとうございます