c++中求e的值

来源:百度知道 编辑:UC知道 时间:2024/09/23 00:32:40
在编写c++源程序计算e=1+1/1!+1/2!+1/3!+....+1/n!+.....的近似值,下面的代码那里有错误呢?还请高人指点~

#include <iostream>
using namespace std;

int main()
{long i,a=1;
double s=1.0,b;

for(i=1;i<=1000;i++)
{a*=i;
b=1.0/a;
s+=b;

}
cout<<s<<endl;

}

a 溢出了,a阶乘到150,a的值都到了10的260次方了,知道10的260次方是什么概念吗?给你说吧,光的速度是最快的,3乘以10的8次方米每秒,一年就走9,460,730,472,580,800米,约等于10的16次方!a阶乘到150都那么利害了,更何况阶乘到1000?
给你改了一下程序,可以得到更精确的数:
#include <iostream>
using namespace std;

int main()
{
int i;
long double a=1;
long double s=1.0,b;

for (i=1;i<=150;i++)
{
a*=i;
b=1.0/a;
s+=b;

}
cout.precision( 20 ); //设置确定度
cout << a << endl;
cout << s << endl;
}

#include <iostream>
#include<float.h>
using namespace std;

int main()
{
int i;
double a=1;
double t=0; // store a;
double s=1.0,b;
for (i=1;i<=200;i++)
{
t=a;
a*=i;
if(a<DBL_MAX)
{
b=1.0/a;
s+=b;
}
else