即使在满足条件之后,for循环也继续执行Java

Ank*_*rma 2 java

我正在运行此代码,循环似乎没有停止在指定的条件.

for(double i=1.0; i!=2.0; i+=0.2){
    System.out.println("The value of i :" +i);
}
Run Code Online (Sandbox Code Playgroud)

这是用Java表示双数的方式的问题吗?

das*_*ght 7

这是一个相当普遍的问题:0.2不能完全用a表示double,所以2.0不等于十0.2加在一起的总和.您需要使用<而不是!=停止循环.

请注意,你的循环可以用于增量等于2的负幂,例如0.25:下面的循环工作正常,并按预期停止:

for(double i=1.0; i!=2.0; i+=0.25){
    System.out.println("The value of i :" +i);
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为0.25可以完全用a表示double.这个小实验表明,在比较doubles的平等或不平等时,你需要非常谨慎.