使用Leibniz系列计算pi

时间:2014-11-14 03:50:13

标签: java methods series pi

我是java新手,我正在尝试制作一个使用Leibniz系列计算pi的程序,迭代次数为100000次。我需要定义一个方法并调用它。当我运行我的程序时,我没有得到结果。有人可以告诉我我做错了什么并帮助我回到正轨吗?

public class pi
{
    public static void main(String[] args)
    {
         double pi = computePi(100000); 
    }
    public static double computePi(int count) 
    {
        double pi = 0;
        count = 100000;
       
        for(int i =0; i<count; i++)
        {
            pi = Math.pow(-1,i)/(2*i+1);

        }
        return pi;
    }
}

3 个答案:

答案 0 :(得分:0)

如果要将其打印到控制台,请尝试:

public static void main(String[] args)
{
     System.out.println("pi = " + calculatePi(100000)); 
}
但是,我不能说精确度。

答案 1 :(得分:0)

您的代码存在一些问题。首先,main中的函数调用与computePi函数的名称不匹配。其次,在for循环中,您可以在每次迭代期间重新分配pi变量的值。您需要做的是获取所有迭代的总和。因此,您需要保留pi的先前值并将当前商添加到其中。最后,Leibnez求和公式返回pi / 4,而不是pi。因此,您应该将返回值更改为pi * 4.

public static void main(String[] args)
{
     double pi = computePi(100000); 
     System.out.println(pi);
}

public static double computePi(int count) 
{
    double pi = 0;

    for(int i = 0; i < count; i++)
    {
        pi += Math.pow(-1,i)/(2*i+1);
    }
    return pi * 4;
}

最后一点:当您传递参数时,您不一定需要将其恢复为变量。只需使用参数值。

答案 2 :(得分:0)

您的代码中存在许多问题。例如,您不打印功能的结果。另一方面,您的实施似乎已关闭。我想你想要,

public static void main(String[] args) {
    double pi = computePi(100000);
    System.out.println(pi);
}

public static double computePi(int count) {
    double pi = 1;

    for (int i = 3; i < count; i += 4) {
        pi = pi - (1 / (double) i) + (1 / (double) (i + 2));
    }
    return pi * 4;
}

输出

3.141612653189785

或者你可以使用内置的Math.PI常量

System.out.println(Math.PI);

输出

3.141592653589793