qian言wan语 2015-10-24 08:41 采纳率: 0%
浏览 1546
已采纳

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

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
  • 写回答

2条回答 默认 最新

  • Meditator_hkx 2015-10-25 11:46
    关注

    你的程序里无意义的语句太多了。
    我用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;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?