为什么使用循环计算pi不能正常工作?

1 java

我们得到了一个赋值,我们必须使用公式计算pi的值pi/4=1-1/3+1/5-1/7+1/9-1/11...(使用100术语),但由于某种原因它似乎没有运行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?????
Run Code Online (Sandbox Code Playgroud)

pro*_*mer 7

问题是你没有输入强制转换.pi是double但1/n返回int,因为分母和分子都是整数.这发生在JAVA中.基本上,由于缺少类型转换,每次(1/n实际上是小数0)都返回(int)n > 1.所以它pi的值总是1,最后pi*4显示4.0.因此,您必须将分子或分母转换(强制转换)为分数(双精度)以使1/n小数.

要解决此问题,请更改语句

pi = pi + 1 / n;
pi = pi - 1 / n;
Run Code Online (Sandbox Code Playgroud)

pi = pi + 1.0 / (double) n;
pi = pi - 1.0 / (double) n;
Run Code Online (Sandbox Code Playgroud)

会将输出显示为3.1514934010709914.

  • 不需要将n转换为double,因为1.0是double,结果将是double (4认同)