Pi 数计算得出 3.22

Pi Number Calculation gives 3.22

我正在尝试使用以下公式计算圆周率: 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

所以当 "step number" 趋于无穷大时它的极限是 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。)