我们得到了一个分配,我们必须使用公式pi/4=1-1/3+1/5-1/7+1/9-1/11...
(使用100
项)来计算pi的值,但由于某种原因它似乎没有运行while循环。我们是没有编写代码经验的学生,而且刚刚开始。
double pi = 1;
int count = 0;
int n = 3;
while (count < 100) {
if ((count&1) == 0) {
pi = pi - 1 / n;
} else {
pi = pi + 1 / n;
}
n = n + 2;
count++;
}
out.print(pi*4); //why is it printing out pi=1?????
答案 0 :(得分:7)
问题是你没有输入。 pi
是double,但1/n
返回int,因为分母和分子都是整数。这发生在JAVA中。基本上,每次1/n
实际上是小数的,由于缺少类型转换而为每个0
返回n > 1
(int)。因此pi
的值始终为1,最后pi*4
显示4.0。因此,您必须将分子或分母转换(强制转换)为分数(双精度)以使1 / n小数。
要解决问题,请更改语句
pi = pi + 1 / n;
pi = pi - 1 / n;
到
pi = pi + 1.0 / (double) n;
pi = pi - 1.0 / (double) n;
这会将输出显示为 3.1514934010709914 。