Luminous425 2022-03-10 07:01 采纳率: 83.3%
浏览 45
已结题

求圆周率的近似值的代码

题目要求如下:

img

我根据公式写的算法是这样的:


#include <iostream>
#include <iomanip>
using namespace std;

double jiecheng(int k)
{
    double s = 1;
    for(int i = 1; i <= k; i++)
    {
        s *= i;
    }
    return s;
}
double fenmu(int k)
{
    int s = 1;
    for(int i = 1; k >= 0; k--, i += 2)
    {
        s *= i;
    }
    return s;
}
int main()
{
    double temp1 = 1, temp2 = 1;
    int k = 0;
    double s = 0;
    double u;
    cin >> u;
    while(temp1 / temp2 >= u)
    {
    
        s += temp1 / temp2;
        k++;
        temp1 = jiecheng(k);
        temp2 = fenmu(k);
        
    
    }
    cout << setprecision(6) << 2.0 * s;
    return 0;
}

得出的结果接近题目给出的输出要求,但是不一样,请问是我的算法不够准确吗

img

展开全部

  • 写回答

1条回答 默认 最新

  • Admini$trat0r .net领域新星创作者 2022-03-10 07:25
    关注
    #include <math.h>
    
    const double PI = acos(-1.0);
    

    听懂掌声

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    Luminous425 2022-03-11 00:07

    但是要求用题目给的式子算的,能不能帮我看一下我的代码哪里有问题呢😂

    回复
    Admini$trat0r 回复 Luminous425 2022-03-11 00:22

    精度肯定有问题,先把算式简化一下,比如357*...1(2n+1)分之357*...1(2n+1)+1!57*...1(2n+1)+2!57*...1(2n+1)
    先算加法最后算除法

    回复
    Luminous425 回复 Admini$trat0r 2022-03-11 05:03

    我写的两个函数分别是求分子和分母的,求完之后用分子除以分母得到单个的项,这个具体误差在哪一步呢

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月14日
  • 创建了问题 3月10日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部