用于带十进制数的语句

时间:2013-11-11 19:34:44

标签: java for-loop double

我知道如何用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 个答案:

答案 0 :(得分:3)

首先我们考虑一下这个显而易见的方法:

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

使用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

答案 1 :(得分:1)

您可以尝试这样: -

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

或者可能是这样的,因为你应该避免for循环加倍:

for (int n = 0; n <= 9; n++) {
    double i = 0.1 * n;
    // ...
}

答案 2 :(得分:0)

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

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

答案 3 :(得分: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