初学者遇到一个关于循环的问题

######初学者遇到一个问题 计算e^x=1+x+(x^2)/(2!)+(x^3)/(3!)+(x^4)/(4!)+...+(x^n)/n!输入输出格式要求:
输入格式:x n回车
e^x, x, n均用double类型存储。
要求输出小数点后6位。
只输出运算结果,请不要输出其他字符,遇到异常情况(如n为负数),输出error

想用两层循环做出来 然后发现不对 每次测试结果都是1,而且我每次想用两层循环解其他题也经常出现这种问题不知道怎么回事,实在找不出来问题所在
#include 

int main() {
    double e, x, n, sum, xsum, nsum, j;
    int i;
    scanf("%f%f", &x, &n);
    for (i = 1; i <= n; i++) {
        sum = 0;
        xsum = 1;
        nsum = 1;
        for (j = 1; j <= i; j++) {
            xsum *= x;
            nsum *= j;
        }
        sum += (xsum / nsum);
    }
    e = sum + 1;
    printf("%.6f", e);
    return 0;
}


scanf("%lf%lf", &x, &n);

scanf两个%f中间加个空格,double要用%lf,输入和输出都是

听了大家的回答能输出6位数了,就是用数字测试答案都是错的qwq是我这个程序有什么逻辑问题吗