我想为我的问题使用for循环,而不是。是否可以执行以下操作?:
for(double i = 0; i < 10.0; i+0.25)
我想添加双倍值。
答案 0 :(得分:52)
为防止被浮点运算的伪像所困,您可能希望使用整数循环变量并在循环中导出所需的浮点值:
for (int n = 0; n <= 40; n++) {
double i = 0.25 * n;
// ...
}
答案 1 :(得分:27)
您可以改为使用i += 0.25
。
答案 2 :(得分:9)
詹姆斯的回答发现了最明显的错误。但是有一个更微妙的(和IMO更具指导性)的问题,因为浮点值不应该与(非)相等进行比较。
该循环容易出现问题,仅使用整数值并计算循环内的double值;或者,不那么优雅,给自己一些余地:for(double i = 0; i < 9.99; i+=0.25)
编辑:原始比较恰好工作正常,因为0.25 = 1/4是2的幂。在任何其他情况下,它可能不能完全表示为浮点数。 (潜在)问题的一个例子:
for(double i = 0; i < 1.0; i += 0.1)
System.out.println(i);
打印11个值:
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
答案 3 :(得分:2)
for(double i = 0; i < 10.0; i+=0.25) {
//...
}
added =表示i = i + 0.25;
的快捷方式答案 4 :(得分:2)
在
for (double i = 0f; i < 10.0f; i +=0.25f) {
System.out.println(i);
f表示float
添加的=
表示i = i + 0.25;
答案 5 :(得分:0)
对于整数。
我们可以使用:for (int i = 0; i < a.length; i += 2)
for (int i = 0; i < a.length; i += 2) {
if (a[i] == a[i + 1]) {
continue;
}
num = a[i];
}
我们也可以为其他数据类型做同样的事情。