我是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;
}
}
答案 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