注册 登录
编程论坛 C++教室

Double型数据的输出问题,请大家指点小弟一下。

yao_210162 发布于 2010-10-01 21:42, 1904 次点击
题目很简单:计算输入X的级数:1+X-X^2/2!+X^3/3!-……(-1)^(n+1)X^n/n!  注:X^n为X的n次幂!将所有不小于绝对值10^-8的数都计入在内,输出精度为10^-8。

下面的代码是我写的,应该没有问题了,可是输出地时候sum的值出现问题了。我截图给大家看哈,编译器VC6!
程序代码:
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double x,Item=1,sum=0;
    double nume=1,deno=1;
    int sign=1,i=1;
    cout<<"Please enter the number:\n";
    cin>>x;
    while (fabs(Item)>=1e-8)
    {
        sum+=Item;
        nume*=x;
        deno*=i++;
        Item=sign*nume/deno;
        sign*=-1;
    }
    cout.precision(8);
    cout<<"The result of "<<x<<" is "<<sum<<endl;
    return 0;
}

只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


后面Double型的sum输出就变为-1.#IND了,大家指教一下这是怎么回事儿?
4 回复
#2
寒风中的细雨2010-10-01 22:47
//发这个程序 自己放数字测试下   我的上面可以最大到170
#include <iostream>
#include <iomanip>
using namespace std;

double factor(double i); //求i的阶乘
int main()
{
    double sum, x;
    while(1)
    {
    cin>>x;
    sum = factor(x);
    cout<<setprecision(8)<<sum<<endl;
    }
    return 0;
}


double factor( double i )
{
    if( i == 1 )
        return 1;
    else
        return i*factor(i-1);
}
#3
longeww2010-10-02 09:14
感觉nume咋没自加呢
#4
m21wo2010-10-02 10:42
程序没写错!出现那个结果是因为计算的次数太多了,导致求阶乘num的值已经非常大了,超出了double型的,所以会出现那种结果!!
#5
yao_2101622010-10-02 11:54
回复 2楼 寒风中的细雨
nume是分子,分子是按次幂递增的。nume*=x;这句就是了!
1