当前位置: 代码迷 >> Java相关 >> [求助]一个简单的问题
  详细解决方案

[求助]一个简单的问题

热度:86   发布时间:2007-07-18 16:31:49.0
[求助]一个简单的问题
JAVA代码如下:
int i=1;
int sum=1;
double e=0.0;
while((Math.E-e)>0.000001){
sum=i*sum;
e=e+1.0/sum;
i++;
}
System.out.println("i="+i);
System.out.println("e="+e);
System.out.println(Math.E);

结果:
i=35
e=Infinity
2.718281828459045
为什么e显示是最小值
如果把e的初始改成1.0就可以了 到底是那里的问题~~~~~!!!!!!!!!
----------------解决方案--------------------------------------------------------
以下是引用kmk2002在2007-7-18 16:31:49的发言:
JAVA代码如下:
int i=1;
int sum=1;
double e=0.0;
while((Math.E-e)>0.000001){
sum=i*sum;
e=e+1.0/sum;
i++;
}
System.out.println("i="+i);
System.out.println("e="+e);
System.out.println(Math.E);

结果:
i=35
e=Infinity
2.718281828459045
为什么e显示是最小值
如果把e的初始改成1.0就可以了 到底是那里的问题~~~~~!!!!!!!c

你说的什么意思?e=1.0后结果还是一样.看下面:


Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\new>d:

D:\>javac demoe.java

D:\>java demoe
i=35
e=Infinity
2.718281828459045

D:\>javac demoe.java

D:\>java demoe
i=10
e=2.7182815255731922
2.718281828459045


----------------解决方案--------------------------------------------------------
e=1.0的时候是可以显示结果 为什么e=0.0的时候就不可以 我的问题就是这个
----------------解决方案--------------------------------------------------------
Infinity是无穷大的意思,e=Infinity不是没值,而是告诉你它是无穷大
----------------解决方案--------------------------------------------------------
不知道你写这个程序是用来干什么
----------------解决方案--------------------------------------------------------

这个是同学写的 问我怎么显示不出来 那为什么会是无穷大呢 明明有条件Math.E-e<0.000001 最多也就和E差不多


----------------解决方案--------------------------------------------------------

  这是一个求自然对数的程序
  其中e=1+1/1!+1/2!+1/3!+1/4!+1/5!+......,项数越多趋近e.
  
  如果e初值等于1.0 ,Math.E-e趋近于0,按照你程序中的条件,在i=10时就会结束循环
  如果e初值等于0.0,Math.E-e趋近于1,那么这将是一个死循环.所以e本来就不应该是0.0
  
  e是趋近1,并不是"无穷大",至于为什么从i=34开始e就等于infinity,这可能跟数的精度有关.


----------------解决方案--------------------------------------------------------
  相关解决方案