圆周率的算法
PI=(1-1/3+1/5-1/7+1/9……)4循环次数越多,精确度越高
像你说的要计算 10000 位小数,普通的算法是无法满足的,一般需要大型计算机
参考代码:
public class Test1 {public static void main(String args[]) {
long time = SystemcurrentTimeMillis();
Pi pi = new Pi(200000000);
picomput();
Systemoutprintln(pigetPi());
Systemoutprintln("消耗时间>>" + (SystemcurrentTimeMillis() - time));
}
}
class Pi {
private double pi;
private int count;
public Pi() {
}
public Pi(int count) {
thiscount = count;
}
public int getCount() {
return count;
}
public void setCount(int count) {
thiscount = count;
}
public double getPi() {
return pi;
}
public void comput() {
pi = 1;
int max = count 2 + 1;
for (int i = 3; i <= max; i = i + 4) {
pi -= 1d / i;
}
for (int i = 5; i <= max; i = i + 4) {
pi += 1d / i;
}
pi = 4;
}
}
错误在return Pi(n-1)-4/(n+1)
准确说是4/(n+1),4是整型,n+1也是整型,两个整型的运算结果也会被强制转换为整型
于是 4/(6+1)会等于0,而不是你预期的057…
修改很简单
把4/(n+1) 改为 40/(n+1)就可以了
以上就是关于java 圆周率。全部的内容,包括:java 圆周率。、java 圆周率 递归 for循环、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)