floatでインクリメントするループを作成していますが、次の例に示す浮動小数点演算の問題が発生しました。
for(float value = -2.0; value <= 2.0; value += 0.2)
std::cout << value << std::endl;
出力は次のとおりです。
-2
-1.8
-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
1.46031e-07
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
なぜ私は1.46031e-07
代わりに正確に取得しているの0
ですか?これが浮動小数点エラーと関係があることは知っていますが、なぜそれが起こっているのか、そしてこれを防ぐために何をすべきか(方法がある場合)を理解できません。誰かが私が理解するのに役立つ説明をする(または私にリンクを示す)ことができますか?どんな入力でも大歓迎です。ありがとう!