我正在编写一个以浮点数递增的循环,但我遇到了以下示例中说明的浮点算术问题:
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
?我知道这与浮点错误有关,但我无法理解为什么会发生这种情况以及我应该做些什么来防止这种情况发生(如果有办法的话)。有人可以解释(或指向我的链接)以帮助我理解吗?任何输入表示赞赏。谢谢!