double计算数值时总为1

为什么 当float换为double时 计算结果总为1?

#include 
void main()
{
    int n,i;
float  x,exp = 1.0,s = 1.0,t = 1.0 ,m =1.0;
    printf("请输入 x,n :\n");
    scanf("%f %d",&x,&n);
    for(i = 1; i<=n;i++)
    {
        
        m = m*i;
        s = s*x;
        t = s/m;
        exp = exp + t ;
    }
    printf("%f",exp);
    return ;
}

```c
#include 
void main()
{
    int n,i;
double  x,exp = 1.0,s = 1.0,t = 1.0 ,m =1.0;
    printf("请输入 x,n :\n");
    scanf("%f %d",&x,&n);
    for(i = 1; i<=n;i++)
    {
        
        m = m*i;
        s = s*x;
        t = s/m;
        exp = exp + t ;
    }
    printf("%lf",exp);
    return ;
}

```

27行开头改成scanf("%lf

#include <stdio.h>
void main()
{
    int n,i;
    double  x,exp = 1.0,s = 1.0,t = 1.0 ,m =1.0;
    printf("请输入 x,n :\n");
    scanf("%lf %d",&x,&n);
    for(i = 1; i<=n;i++)
    {
        
        m = m*i;
        s = s*x;
        t = s/m;
        exp = exp + t ;
    }
    printf("%lf",exp);
    return;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^