0

クラス用にこのプログラムを作成していて、数値の立方根を推測する必要があります。これが私のコードです:

int N = Integer.parseInt(args[0]);

//sets the guess at 1.0
guess = 1.0;

//whether or not the guess is close to N
while (guess * guess * guess <= N ){

     double show = (guess + ((1/3) * ((N / (guess * guess)) - guess)));
     System.out.println(show);
     guess = show;
     continue;

}

ただし、このプログラムを実行するたびに、二重表示は常に値 1 に設定されます。なぜこれが起こっているのか、どうすれば修正できるのか教えてもらえますか?

4

3 に答える 3

3

定数式(1/3)は整数演算を使用して計算され、0 のままです。 を使用してみてください(1.0/3.0)。または、代わりに、

 double show = (guess + (((N / (guess * guess)) - guess)) / 3.0);
于 2012-09-14T03:04:36.857 に答える
3
1/3 = 0

1/3 は整数除算であり、常に 0 であるためです。

1.0/3.0
于 2012-09-14T03:04:57.220 に答える
3

問題は整数除算です。1 / 3 = 0.

に変更します1.0 / 3.0

ところで、continue声明にはポイントがありません...

于 2012-09-14T03:05:39.077 に答える