我尝试制作一个程序(用Java编写),用Chudnovsky算法计算pi
,但它有输出NaN(非数字)。请帮我找到代码中的错误,或者改进我的代码。 (我没有很多Java编程知识)
你可以在这里找到Chudnovsky的算法:
https://en.wikipedia.org/wiki/Chudnovsky_algorithm
这是我的代码:
package main;
public class Class1 {
public static void main(String[] args)
{
double nr1=0,nr2=0,nr3=0,pi=0;
int fo1=1, fo2=1, fo3=1;
for(int i=0; i<=20; i++){
for(int fl1=1; fl1<=(6*i); fl1++){fo1 = fo1 * fl1;}
for(int fl2=1; fl2<=(3*i); fl2++){fo2 = fo2 * fl2;}
for(int fl3=1; fl3<=(i); fl3++){fo3 = fo3 * fl3;}
nr1 = ( (Math.pow(-1, i)) * (fo1) * ((545140134*i) + 13591409) );
nr2 = ( (fo2) * (Math.pow(fo3, i)) * ( Math.pow(Math.pow(640320, 3), (i+(1/2)) )) );
nr3 = 12 * (nr1/nr2);
}
pi = 1/nr3;
System.out.println((Math.PI));
System.out.println(pi);
}
}
答案 0 :(得分:3)
这里有很多问题。
修复它并非易事。你可以看看 Error calculating pi using the Chudnovsky algorithm - Java 和 http://www.craig-wood.com/nick/articles/pi-chudnovsky/ 对于某些提示,但不要期望内置的原始类型与该算法一起使用。