//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;
}
感谢感谢!