祖冲之算法
1.题目描述
π 3.1415926~3.1415927之间 4/1-4/3+4/5-4/7+4/9-4/11+4/13.......... 通过关系,来计算 运算多少次之后,才会得到3.1415926~3.1415927之间
2.代码
public class Main2 {
public static void main(String[] args) {
double ltargetPi=3.1415926;
double rtargetPi=3.1415927;
int iteration=calculatePi(ltargetPi,rtargetPi);
System.out.println("在"+ltargetPi+'-'+rtargetPi+"范围内,进行了"+iteration+"次迭代!");
}
//不断更新calculatePi的值以至于获取逼近的Π的值
public static int calculatePi(double ltargetPi,double rtargetPi){
double calculatePi=0.0;//存储Π的值。下面计算的时候会一直更新这个值,一直去逼近Π
int sign=1;//表示正负号的
int denominator=1;//表示分母 每次迭代会+2
int iteration=0;//表示迭代的次数,0表示没有进行迭代
//每次迭代逼近目标的Π值
//每次循环计算的是精度,大于的话就是还没到精度就会一直循环下去
while (true){
double term=sign*(4.0/denominator);//必须是x.0的形式不然不是double
calculatePi+=term;//计算当前的Π值
sign*=-1;//变换符号
denominator+=2;//更新分母
iteration++;//更新迭代次数
if (ltargetPi<=calculatePi&&calculatePi<=rtargetPi){
break;
}
}
return iteration;//得到迭代次数
}
}