// double ?
for(i=1.000000;n>=EPSILON;++i)
{
z=z*i; // 阶乘
n=m/z; // 求反
t=t+n; // 求和
}
你是想表达这个意思吧double s,e,n,z,m,t,i; // 1. 不需要全部使用double的
// double是处理小数位数多的时候进行使用的
// double和float都是一个相似值
t=0.000000;
m=1.000000;
s=1.000000;
z=1.000000;
for(i=1.000000;n>=EPSILON;++i) // n的初始化呢? n什么时候才能够 >= EPSILON
// 所以你这里应该使用do while的结构,而不是 for
{
z=z*i; // 这里的问题,就是我前面标示的,
//long long会更精确一点,而1.0000001 * 1.0000002的结果会对下面有影响的
n=m/z; // m 始终没有改变过,没有必要使用一个变量:)
// n = double(1) / z;
t=t+n; // t += n; 个人习惯
}
e=t+1.000000;
printf("e=%.6lf",e);
return 0;