Pi数计算给出3.22

时间:2016-03-17 17:53:27

标签: java pi

我正在尝试使用以下公式计算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,请记住。

提前致谢。

1 个答案:

答案 0 :(得分:5)

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

而不是

value = 1/(process+2);

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

现在这将以3开头的奇数推进分母,这是好的,因为你在最后添加了1

通过这个改变和1,501个循环,我得到3.1409268747021875 - 非常接近这种计算pi的方法。 (100,000个循环打印3.141602653489781。)