java - Pi 数计算得出 3.22

标签 java pi

我正在尝试使用以下公式计算圆周率: pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 ...

   public class Calculator
{
  double process=1;
  double piValue=0;
  int approximation;
  double value;
  public Calculator( int precision)
  {
    approximation = precision;
  }

  public void calculate()
  {
    while(process<=approximation)
    {
      value = 1/(process+2);
      if(process%2==0)
      {
        value = value;
      }
      else
      {
        value = value * (-1);
      }
      piValue = piValue + value;
      process++;
    }
    System.out.println((1+piValue)*4.0);

  }
}

我在这里没有发现任何问题,但我一直得到非常无意义的输出。以下是一些示例:

23. step: 3.1490100018286853 This is OK.
1501. step: 3.22874239242146
100,000 step: 3.2274312772602247

因此,当“步数”趋于无穷大时,它的极限约为 3.22 。我该如何解决这个问题?

我刚开始学习Java,请记住这一点。

提前致谢。

最佳答案

while 循环的顶部计算value 时,您对process 的使用不正确;你最终会计算出 -1/3 + 1/4 - 1/5 + ....

代替

value = 1/(process+2);

尝试

value = 1/(2*process + 1);

现在这将从 3 开始将分母增加奇数,这没问题,因为您在最后添加了 1

通过此更改和 1,501 次循环,我得到 3.1409268747021875 - 与这种计算圆周率的方法非常接近。 (100,000 次循环打印 3.141602653489781。)

关于java - Pi 数计算得出 3.22,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068178/

相关文章:

java - 将 Xml 转换为 JSON 的方法(包含示例)

Java-使一种特定颜色透明

algorithm - 使用基本算法以任意精度计算 Pi

java - 生成pi到第n位java

c++ - 找到第 N 位的 Pi

java - SQLite 没有在 Android studio 中创建任何表

Java和 Selenium : Trouble getting contents of input field

java - 从麦克风录制的声音的音量

javascript - 使用 Gregory-Leibniz 级数在 JavaScript 中计算 Pi

python - 如何在tensorflow中获取PI?