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していないのではないかと思います。

それらをdoubleとして表現しようとしています。2.0 / 20.0

于 2012-11-17T15:50:06.607 に答える
2

整数除算、2/20 = 0

すなわちx=x+0

したがって、イテレータは変更されないため、無限ループになります。

あなたがやろうとしていることを仕事にするには、2.0/20.0

于 2012-11-17T15:51:26.417 に答える
1

2/20は整数算術演算であるため、結果はゼロです。基本的に、ループ内でxをインクリメントしていません。これをfloat除算としてスレッド化するには、次のものが必要です。

2.0/20

また

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