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 回答