求PI的问题

tonytrivino 2008-10-05 12:26:21
想找一个求PI的程序,在了解BigDecimal类后,我觉得下面这个程序可行,但是问题出来了:

import java.math.*;
public class CaculatePI {

public static String forPI(int a) {

// PI=4*(1-1/3+1/5-1/7+...)
BigDecimal result, index, temp, flag, b, c;
b=new BigDecimal(1,new MathContext(a,RoundingMode.HALF_UP)); // numerator
c=new BigDecimal(2);
result=new BigDecimal(0,new MathContext(a,RoundingMode.HALF_UP));
temp=new BigDecimal(1,new MathContext(a,RoundingMode.HALF_UP));
index=new BigDecimal(1); // denominator
flag=new BigDecimal(0.1);
while(temp.abs().compareTo(flag)==1) {

temp=b.divide(index);
result.add(temp);
index.add(c);
index=index.negate();
}

result=result.multiply(new BigDecimal(4));
return result.toPlainString();
}

public static void main(String [] args) {

System.out.println(forPI(10));

}
}


这个程序可以编译,大家看到了吧,我只想求到小数点后的10位,但是java CalculatePI后好长的时间后都不出来结果,不知道为什么?
如果你有更好的代码,请发了这里。。。
求助。。。
...全文
74 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧