| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 940 人关注过本帖
标题:求圆周率中涉及科学计数的问题
只看楼主 加入收藏
bbxymc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-3-27
收藏
 问题点数:0 回复次数:4 
求圆周率中涉及科学计数的问题
求圆周率:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
void main()
{ float pi=0,n=1.0,t=1,int s;s=1;
while(fabs(t)>0.000001)
{pi+=t;
n+=2;
s=-s;
t=s/n;
}
pi=4*pi;
cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl;
}
while(fabs(t)>0.000001)为什么改用while(fabs(t)>1e-6)就没有输出?
搜索更多相关主题的帖子: 圆周率 科学 计数 
2008-03-27 20:57
handongxue
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-3-25
收藏
得分:0 
一处小错误
float pi=0,n=1.0,t=1,int s;s=1;   //int前的逗号应改为分号。

其余地方没有问题,改为while(fabs(t)>1e-6)也可以输出的。
2008-03-28 00:28
bbxymc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-3-27
收藏
得分:0 
谢谢楼上,还有个小问题
呵,谢谢!我没注意到分号的问题,用语句while(fabs(t)>1e-6)可以输出,但我想把小数精度设成8位,语句分别改成while(fabs(t)>1e-8)和cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(8)<<pi<<endl;就没有输出结果了,是什么原因呢?
2008-03-28 13:47
acrobatyuer
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-3-28
收藏
得分:0 
LZ你应该了解一下浮点型常量在计算机中能有几个有效数字的问题了吧!
2008-03-29 08:25
bbxymc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-3-27
收藏
得分:0 
关于浮点数在内存中的有效长度我注意了呀!可还是又问题?
float的有效位是7位,double有效位是15位。在使用float时,语句float pi=0,n=1.0,t=1,int s=1;和while(fabs(t)>1e-6)和cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl;实际输出有效位是8位,超出了float的有效位7位,也能正常输出;可在将float改位double时,相应语句也变成double pi=0,n=1.0,t=1,int s=1;和while(fabs(t)>1e-8)和cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(8)<<pi<<endl;实际输出有效位是10位,没超出double的有效位15位,怎么就不正常输出了呢?
2008-03-29 16:19
快速回复:求圆周率中涉及科学计数的问题
数据加载中...
 
   



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

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