| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 145 人关注过本帖
标题:求圆周率中的精度问题,请大家帮我看看
只看楼主 加入收藏
帝师
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:136
专家分:70
注 册:2018-10-11
结帖率:100%
  已结贴   问题点数:20  回复次数:2   
求圆周率中的精度问题,请大家帮我看看
计算圆周率1
题目描述:
圆周率可以采用如下公式进行计算:
 pi/2=1+1*1/3+1*1/3*2/5+1*1/3*2/5*3/7+..........
现要求根据输入的精度e,即最后一项的值不小于精度e时,输出相应的圆周率的值,结果保留六位小数。
输入
输入一个精度e。
输出:
输出对应的圆周率,结果保留六位小数。
样例输入;
0.00005
样例输出:
3.141480

(我代码的答案在精度上在最后几位和答案有出入,亲前辈们指点我一下
我的答案:3.141538
)
#include<stdio.h>
int main()
{
    double pi=1;
    double x,y;//分子分母
    double sum=1;//每次加上的数
    double n;//要使其小于最后一项
    scanf("%lf",&n);
    for(x=1,y=3;sum>n;x+=1,y+=2)
    {
        sum*=x/y;
        pi+=sum;
    }
    printf("%.6lf\12",2*pi);

   
}
2018-12-06 07:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:273
帖 子:6001
专家分:34326
注 册:2011-1-18
  得分:20 
不要再 \12 了,多恶心呀,当然你不听也就算了
你是先判断 sum>n,然后更改sum(sum*=x/y;)
sum*=x/y 移到 sum>n 之前就行了
2018-12-06 08:52
帝师
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:136
专家分:70
注 册:2018-10-11
  得分:0 
回复 2楼 rjsp
这样吗?
#include<stdio.h>
int main()
{
    double pi=1;
    double x,y;//分子分母
    double sum=1;//每次加上的数
    double n;//要使其小于最后一项
    int k;
    scanf("%lf",&n);
    for(x=1,y=3;k;x+=1,y+=2)
    {
        sum*=x/y;
        if(sum>n)
            k=0;
        pi+=sum;
    }
    printf("%.6lf\12",2*pi);

   
}

I am the voice of the next generation
Completely digital
Create synthetic auras
2018-12-06 17:44







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021798 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved