1求π的三种算法实现与程序结构
2观察不同数据类型对π精度影响
3动态调试数据类型互换及精度分析float double
求π的4种算法实现(直到某一项的绝对值小于10^(-6)为止),4种方法计算公式,哪个最精确,为什么
你题目的解答代码如下:
#include<stdio.h>
#include<math.h>
// pi^2/6=1/1^2+1/1^2+1/3^2............
double getPI1()
{
double PI=0,term,n=1;
do {
term=1.0/(n*n);
PI+=term;
n+=1;
} while(fabs(term)>=pow(10,-6));
return sqrt(PI*6);
}
// pi/2=((2*2)/(1*3))*((4*4)/(3*5))*((6*6)/(5*7))*............
double getPI2()
{
double PI=1,term,n=2;
do {
term=(n*n)/((n-1)*(n+1));
PI*=term;
n+=2;
} while(fabs(1-term)>=pow(10,-6));
return PI*2;
}
// pi/4=1/1-1/3+1/5-1/7+1/9-............
double getPI3()
{
double PI=0,term,n=1;
int sign=1;
do{
term=sign/n;
PI+=term;
n=n+2;
sign=-sign;
}while(fabs(term)>=pow(10,-6));
return PI*4;
}
// pi+3=4/(2*3*4)-4/(4*5*6)+4/(6*7*8)-............
double getPI4()
{
double PI=0,term,n=2;
int sign=4;
do{
term=sign/(n*(n+1)*(n+2));
PI+=term;
n=n+2;
sign=-sign;
}while(fabs(term)>=pow(10,-6));
return PI+3;
}
int main()
{
printf("getPI1() PI=%.16lf\n",getPI1());
printf("getPI2() PI=%.16lf\n",getPI2());
printf("getPI3() PI=%.16lf\n",getPI3());
printf("getPI4() PI=%.16lf\n",getPI4());
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!