1/n!直到最后一项小于10的-6次方

//C语言:求e的值。e≈1+1/1!+1/2!+1/3!+......,直到最后一项的值小于10的-6次方为止
#include<stdio.h>

main()
{
    int i=1;
    double sum=1,e=1;
     
    while(1/sum >= 1e-6)
    {
        sum *= i;
        e = 1/sum;
        i ++;
    }
    printf("最后一项为%f",e);            
}

请问下,如果是最后的一项小于1e-6,单独输出最后一项,要怎么操作呢?
我的这个代码结果为0。这是为什么呢?

double类型要用%lf输出,默认小数点后6位,所以要改一下,这里改为小数点后10位%.10lf


#include<stdio.h>
 
int main()
{
    int i=1;
    long dx=1;
    double sum=1,e=1;
     
    while(e >= 1e-6)
    {
        dx*=i;  // i!
        e = 1.0l/dx;  //每一项1/i!
        sum += e;
        i ++;
    }
    
    printf("最后一项为%.10lf\n",e);    
    printf("e=%.10lf",sum);
    return 0;
}

感谢感谢!