问题描述
- 为什么两个的结果误差那么大??
-
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 = %fn",e);
return 0;
解决方案二:
a=a/i
->a=a/(double)i
时间: 2024-08-02 07:12:51