请问为什么编出来和结果有差别,如果要结果那样应该如何编呢?


#include <stdio.h>
int main() 
{
    double eps;
    double e=1.00,i=1,j,s=1.00;
    scanf("%lf",&eps);
    for(j=1;j<=i;j++)
    {
        s=s*j;
        if(1.00/s>=eps)
        {
            e=e+1.00/s;
            i++;
        }
    }
    e=e+1.00/s;
    printf("%.8lf",e);
    return 0;
}

```![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/440726986746170.jpeg "#left")

这是我编的代码,答案为什么和标准的不一样,如果要和标准的相同,应该如何做呢?

1️⃣将声明定义变量的float改为double
2️⃣将输出时的.8f改为.8lf

img

希望对题主有所帮助!可以的话,帮忙点个采纳!

e和s定义为double型,不能是float型,精度不够。输出用%.8lf