为什么两个的结果误差那么大??

package com.sthpu.java1;
/**

  • 求e
  • e=1+1/1!+1/2!+....
  • / public class Practice1 { public static void main(String[] args){ double e=1.0; double a=1.0; for(int i=1;i<30;i++){ a=a/i; e=e+a; } System.out.println("e="+e); } } 输出结果是:2.71828182845 package com.sthpu.java1; /*
  • e=1+1/1!+1/2!+....
  • */ public class Practice1_1 { public static void main(String[] args){ double e=1.0,a=1.0; //int s=1,n=1,b=0; double s=1.0,n=1.0,b=0.0; while(a>=1e-6){ b=n; while(n>0){ s=s*n; n=n-1; } a=1.0/s; e=e+a; n++; n=++b; } System.out.println(e); } } 输出结果2.5868345

你的程序里无意义的语句太多了。
我用C写了一遍,你参考一下呢:
结果图:图片说明
程序:

    double e=1.0,a=1.0; 
    double s=1.0,n=1.0,b=0.0; 
    while(a>=1e-6) { 
//      b = n; 
/*      while(n>0) {
            s=s*n;
            n=n-1;   Meaningless
        }           */

        a = 1.0/s; 
        e = e + a; 
        n++; 
        s = s * n; //New
    //  n=++b;   Meaningless 
    } 
    printf("e = %f\n",e);  
    return 0;

a=a/i
->a=a/(double)i