c语言求求e的x次方为何有误差,,,

求e的x次方***
已知 编写程序求ex = 1 + x + x2/2! + x3/3! + ...,要求到最后一项小于0.001为止。

测试用例
0↵ 1.00000↵
测试用例
1↵ 2.71806↵

测试用例 3
0.5↵ 1.64844↵

#include<stdio.h>
#include<math.h>
double f(int m)
{if(m>1) return m*f(m-1);
else return 1;
}
int main()
{double x,s=1,m=1,n=0,i;
scanf("%lf",&x);
for(i=1;m-0.001>=1e-10;i++)
s+=(m=pow(x,i)/f(i));
printf("%.5f\n",s);
} 

这是我编写的程序 这个结果不准确有误差m-0.001>=1e-10这个判断改了好几种方式还是不行。。。

 #include<stdio.h>
#include<math.h>
double f(double m)
{
    if(m>1) return m*f(m-1);
    else return 1;
}
int main()
{
    double x,s=1,m=1,n=0,i;
    scanf("%lf",&x);
    for(i=1;;i++)
    {
        m=pow(x,i)/f(i);
        if(m<0.001) break;
        s+=m;
    }
    printf("%.5f\n",s);
} 

double f(int m)
{if(m>1) return m*f(m-1);
else return 1;
}

这段函数只能求整数的次方。

你可以用pow去算次方。

将函数的形参改为double类型,试试