0

我知道如何使用 for 循环递增 1,例如:

for(int i = 0; i < 9; i++){
    System.out.println(i);
}

会打印出 0 到 8,但我不知道如何制作一个以十进制数递增的 for 循环,例如 0.1。就我而言,我试图纠正一个从 -1.00 到 1.00 递增 0.1 的 for 循环。任何帮助将不胜感激。

4

4 回答 4

4

首先,我们考虑显而易见的方法:

for(double i = -1; i <= 1; i += 0.1){
    System.out.println(i);
}

存在浮点问题,特别是因为您使用 0.1 作为增量。如果你运行代码,这是输出:

-1.0
-0.9
-0.8
-0.7000000000000001
-0.6000000000000001
-0.5000000000000001
-0.40000000000000013
-0.30000000000000016
-0.20000000000000015
-0.10000000000000014
-1.3877787807814457E-16
0.09999999999999987
0.19999999999999987
0.2999999999999999
0.3999999999999999
0.4999999999999999
0.5999999999999999
0.6999999999999998
0.7999999999999998
0.8999999999999998
0.9999999999999998

使用 to 的映射intdouble产生更好的结果:

for(int i = -10; i <= 10; i++){
    System.out.println(i / 10.0);
}

输出:

-1.0
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
于 2013-11-11T19:36:24.897 回答
1

你可以这样尝试:-

for(double i = 0; i < 10.0; i += 0.1)

或者可能是这样的,因为你应该避免在 for 循环中重复:

for (int n = 0; n <= 9; n++) {
    double i = 0.1 * n;
    // ...
}
于 2013-11-11T19:36:46.663 回答
0

为防止浮点算术错误,请使用 int 直到需要显示它:

    for (int i = -10; i <= 10; ++i)
    {
        System.out.println((double)i/10);
    }
于 2013-11-11T19:44:06.257 回答
0

您可以使用它来迭代 -1.0 到 1.0

for(int i=-100; i<=100; i+=10) {
    double x = i/100.0;
    System.out.println(x);
}

这输出:

-1.0
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
于 2013-11-11T19:44:25.230 回答