m0_70327432 2022-06-01 00:55 采纳率: 60%
浏览 90
已结题

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

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

img

  • 写回答

2条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 6月1日