标题:c++级数逼近问题
只看楼主
梦里花开
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-9-30
 问题点数:0 回复次数:4 
c++级数逼近问题
本女C++初学
无任何编程基础
入手比较开头难
望各位看官,大侠赐教


数学公式是: π/4≈1-1/3+1/5-1/7+...
求π近似值,精确到小数点后6位


#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
void main()
{
double sum=0,item=1;
for(int n=1;abs(item)>1e-6;n++)// 要说明通过判断后一项的绝对值 小于10的6次方而得到循环退出条件, 为什么要是这样判断呢?跟10的6次方有什么关系?看不懂。。

{item *=(-1.0)*(2*n-3)/(2*n-1);
sum +=item;
}
cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<sum*4<<endl; //流状态?参数是什么意思?
}
搜索更多相关主题的帖子: 级数 
2008-09-30 09:08
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
abs(item)>1e-6
取item的绝对值,其实应该用fabs的(你没发现你的结果不对吗?问题就是这个... )
1e-6即10的-6次方...
setiosflags(ios::fixed)<<setprecision(6)
控制小数点后6位而已...

2008-09-30 09:27
梦里花开
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-9-30
得分:0 
谢谢斑竹大人
可是为什么偏偏是10的-6次方呢?怎么要想到是这个循环条件呢?
2008-09-30 11:15
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
[bo][un]梦里花开[/un] 在 2008-9-30 11:15 的发言:[/bo]

谢谢斑竹大人
可是为什么偏偏是10的-6次方呢?怎么要想到是这个循环条件呢?

这个要看题目对精度的要求啊...

2008-09-30 11:30
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 
函数用错了,应该用fabs,而不是abs,abs(-0.3333)=0,这是取绝对值的整数位.

雁无留踪之意,水无取影之心
2008-09-30 20:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-235855-1-1.html




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

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