| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1571 人关注过本帖
标题:求PI的值的问题
只看楼主 加入收藏
sct1981
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-4
收藏
 问题点数:0 回复次数:3 
求PI的值的问题
/*根据以下公式返回满足精度M要求的PI的值。
PI=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+......*/


#include <stdio.h>
double pi (double m)
{
double s=0.0,t=1.0;int n;
for(n=1;t>m;n++)
{s+=t;t=n*t/(2*n+1);}           
return(2.0*s);
}
main()
{double a,m;
 printf("please give the m\n");
 scanf("%f",&m);
 printf("%f\n",a=pi(m));
 getch();
 }

求给定精度的PI的值,可我不管输入0.1还是0.000000000001,结果都是3.141593,程序那里的问题,还请指教.
搜索更多相关主题的帖子: double 精度 printf main give 
2008-06-05 17:47
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
因为你是用的double,所以显示的位数有限制地

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-05 18:43
sct1981
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-4
收藏
得分:0 
如果这样的话,我输入0.1,应该输出3.100000才对.
2008-06-05 20:32
sct1981
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-4
收藏
得分:0 
行了,写成这样就OK了.
#include <stdio.h>
double pi (double m)
{
double s=0.0,t=1.0;int n;
for(n=1;t>m;n++)
{s+=t;t=n*t/(2*n+1);}           
return(2.0*s);
}
main()
{double m;
printf("please give the m\n");
scanf("%lf",&m);
printf("%lf\n",pi(m));
getch();
}
2008-06-05 20:50
快速回复:求PI的值的问题
数据加载中...
 
   



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

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