java - 为什么使用循环计算 pi 无法正常工作?

标签 java

我们得到了一个作业,我们必须使用公式 pi/4=1-1/3+1/5-1/7+1/9-1/11... 计算 pi 的值... (使用 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?????

最佳答案

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

要解决问题,请更改语句

pi = pi + 1 / n;
pi = pi - 1 / n;

pi = pi + 1.0 / (double) n;
pi = pi - 1.0 / (double) n;

这会将输出显示为 3.1514934010709914

关于java - 为什么使用循环计算 pi 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39307905/

相关文章:

java - 继承期间Java中的泛型

java - java 中带有抽象类的 jar 的误导行为

java - 使用 Java 字符数组处理 C 字符数组

java - setDragImage 不工作 - Java 7

java - 正则表达式替换java中查询参数中的值

java - 如何结合 HttpServletRequest + @RestController

java - 并行运行器跳过测试内的循环迭代

java - 我们可以使用多态性将抽象类对象作为参数传递吗?

java - HTTP 500 错误 : How do I fix my `dispatcher-servlet.xml` file?

java - 取决于浏览器的复选框/后退按钮问题