| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:圆周率问题~~
只看楼主 加入收藏
s36519882009
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-3-2
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:2 
圆周率问题~~
#include<stdio.h>
#include<math.h>
  void main(){
  int n;
  double a,sum;
  double pai=4.0;
  for(sum=0.0,n=1;fabs(pai-3.14159165)>=1e-5;++n)
   {
   a=1.0/(n*n);
   sum+=a;
   pai=sqrt(sum*6);
   }
   printf("%d,%f,%f\n",n-1,sum,pai);
}
程序能运行,但是不出结果~~百思不得其解呀~~请大虾们指点呀~~

110.png (4.64 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 圆周率 
2009-07-20 23:01
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:50 
把下面这行:
    a = 1.0/(n*n);
改成这样:
    a = (1.0/n) * (1.0/n);
即可得到结果。

因为当n>65535以后,n*n会溢出(对于32位的机器)。在这里使用一个比较笨的技巧使其避免溢出这种的情况发生。

BTW:
"fabs(pai-3.14159165)"中的"3.14159165"应该为"3.14159265"。
2009-07-21 01:40
s36519882009
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-3-2
收藏
得分:0 
回复 2楼 prankmoon
3q呀~~Ok啦~~
2009-07-21 09:10
快速回复:圆周率问题~~
数据加载中...
 
   



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

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