循环以十进制递增

时间:2017-04-27 18:17:51

标签: c++

如何在for循环中增加:

for (int j = 0; j < 1.0; j+=0.01) {}

我立即知道有一个小数点可以使用int奇数。

修改

在任何人变得厚颜无耻之前,我已经知道int是不正确的...问题是如何执行该方法,因为int不是一种有效的方式。

4 个答案:

答案 0 :(得分:9)

我建议不要这样做,而是使用整数。 Floating point math is weird并且可以为您提供不受欢迎的结果。以您的范围为例,我们可以使用

for (int i = 0; i < 100; ++j)
{
    double step = static_cast<double>(i) / 100;
}

这可以保证我们获得100次迭代,但仍允许您获得小数&#34;步骤&#34;每次迭代。

答案 1 :(得分:3)

使用double并接受累积错误,或以固定点形式使用int,这样您就可以在每个循环上计算更准确的值。

使用double

for (double j = 0; j < 1.0; j+=0.01) {}

使用固定点获得最大准确度:

for (int i = 0; i < 100; ++i) {
    double j = i / 100.0;
}

答案 2 :(得分:1)

使用浮点类型而不是整数类型。

for (float j = 0; j < 1.0; j+=0.01) {}

for (double j = 0; j < 1.0; j+=0.01) {}

答案 3 :(得分:1)

由于j的类型为int,因此对其执行的任何算术运算的结果都将被截断为整数值。所以那些增量将没有任何效果。如果您将j的类型更改为double,则会更像您期望的那样。但请记住,0.01不能完全表示为IEEE浮点值(这是您的硬件几乎肯定会使用的)。