1求π的三种算法实现与程序结构2观察不同数据类型对π精度影响3求π的4种算法实现(直到某一项的绝对值小于10^(-6),4种方法计算公式,哪个最精确,为什么

1求π的三种算法实现与程序结构
2观察不同数据类型对π精度影响
3动态调试数据类型互换及精度分析float double
求π的4种算法实现(直到某一项的绝对值小于10^(-6)为止),4种方法计算公式,哪个最精确,为什么

img

你题目的解答代码如下:

#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;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632