为什么for循环在迭代双精度时会提前终止?

时间:2017-11-08 03:21:47

标签: c++ for-loop double iteration

如果for循环&#34;迭代&#34;例如,即使在写<=时,循环也会从i=39结束,从而在#include <iostream> using namespace std; int main() { for (double i = 0.00; i <= 0.40; i += 0.01) { cout << i << " "; } return 0; } 时终止。当使用整数执行基本相同的操作时,程序会正常运行。

1 2 3

这会返回37 38 39 ... i <= 0.41

您可以在此处测试:https://ideone.com/bP3ilk

是什么导致了这种行为,并且有一种理想的方法可以解决这个问题,因为仅仅编写{{1}}似乎是一个hacky解决方案。更重要的是,如果0.40是用户输入的值,添加少量肯定被视为不良做法。

很抱歉,如果标题和问题的短语很差,我不确定如何说出来。

0 个答案:

没有答案