我知道如何用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循环。任何帮助将不胜感激。
答案 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
使用int
到double
的映射会产生更好的结果:
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