当前位置: 代码迷 >> Java相关 >> Java中的NaN和Infinity
  详细解决方案

Java中的NaN和Infinity

热度:407   发布时间:2013-04-16 17:05:01.0
Java中的NaN和Infinity
声明并初始化一个变量i,使得以下语句块为无限循环:
[java] view plaincopyprint?
while(i != i) {  
      
}  
首先我们要知道==是否满足自反性,如果满足,那么该题无解。
事实上==只满足对称性,不满足自反性,一个反例是NaN
NaN是Not a Number的缩写,即不是一个数字。它不等于任何浮点数,包括自己。
我们可以得到这样一个等式:
NaN != NaN
那么如何得到一个NaN呢?
[java] view plaincopyprint?
double i = 0.0/0.0;  
float    j  = 0.0f/0.0f;  
System.out.println(i); // NaN   
System.out.println(j); // NaN  
还可以利用类库提供的API来得到:
[java] view plaincopyprint?
Double.NaN  
Float.NaN  
在whil循环中,除了可以使用true来达到无限循环目的以外,还可以这样:
[java] view plaincopyprint?
double i = Double.NaN;  
while(i != i) {  
      
}  
浮点数除了具有NaN之外,还有另外一个特殊值:Infinity:
[java] view plaincopyprint?
double x = 1.0/0;  
System.out.println(x); // Infinity   
System.out.println(-x);  // -Infinity  
与NaN不同的是,Infinity满足自反性:
[java] view plaincopyprint?
double i = 1.0/0;  
double j = 1.0/0.0;  
System.out.println(i == j); // true  
java培训、成都php培训找最专业的成都IT培训机构成都达内。!成都java培训官网:http://www.cdtarena.com
搜索更多相关的解决方案: double  Java  如何  

----------------解决方案--------------------------------------------------------
NaN  Not a Number  不是一个数
Infinite  无限




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