能不能帮新手看看,为什么输入小数就错误了
题目:输入一个实数x,计算多项式x+(x^2)/2!+(x^3)/3!+...的和,直到末项的绝对值小于10^-5(保留三位小数)
例子:
输入
1
2
3.2
输出
1.718
6.389
23.533
我的代码
#include<stdio.h>
#include<math.h>
int main()
{
double item,s,x,factorial(int n);
int n;
n=1;
s=0;
item=1;
scanf("%lf",&x);
while(item>=1e-5)
{
item=pow(x,n)/factorial(n);
n++;
s=s+item;
}
printf("%.3f\n",s);
return 0;
}
double factorial(int n)
{
int i,fact=1;
for(i=1;i<=n;i++)
{
fact=fact*i;
}
return fact;
}
程序在运行时,输入1,2的结果都是对的,可是输入3.2时候输出的是22.281 并不是题目给出的例子的答案,我实在找不到错误,是溢出了吗?求大神指点迷津!谢谢!