2

我正在尝试通过一个 for 循环,它就像任何其他 for 循环一样,但它似乎是无限的;我一定是在做一些愚蠢的事情。任何人都可以看到吗?

double x;
for(x = -1; x < 1; x+=2/20) {
    double y = b * Math.sqrt(1-Math.pow(x-FocusToCenter, 2));
    System.out.println("X:"+x+" Y: "+roundFourDecimal(y));
}

如果将 x+=2/20, 更改为 x+=0.1,那就完全没问题了。

4

3 回答 3

6

2/20评估什么?我怀疑因为它们都是整数,所以你得到一个 0,因此根本不会增加x

尝试将它们表达为双打,例如2.0 / 20.0

于 2012-11-17T15:50:06.607 回答
2

整数除法,2/20 = 0

IEx=x+0

因此迭代器没有被修改,因此无限循环

要做你想做的事情,试试2.0/20.0

于 2012-11-17T15:51:26.417 回答
1

2/20 是整数算术运算,因此结果为零。基本上你不会在循环中增加 x 。为了将其作为浮点除法线程,您需要:

2.0/20

或者

((double)2) / 20;
于 2012-11-17T15:50:41.753 回答