1. 程式人生 > >Java中NAN與INFINITY參與運算的情況

Java中NAN與INFINITY參與運算的情況

java浮點數運算中有兩個特殊的情況:NAN、INFINITY。
Nan:不是一個數
Infinity:無窮大

NAN與INFINITY參與運算的情況:

1)非零浮點數被零除的無窮值,即
1.0 /0 = Infinity, -1.0/0 = -Infinity

2)零浮點數除以零=Nan,即0.0/0=Nan

3)NaN參與的運算都為NaN,即
NaN+NaN = NaN, 
NaN-NaN = NaN, 
NaN * NaN = NaN, 
NaN / NaN = NaN,
NaN / 1.0 = NaN, 
NaN / Infinity = NaN, 
NaN / -Infinity = NaN

4)Infinity與-Infinity參與的運算,即
Infinity + Infinity = Infinity, 

Infinity-Infinity = NaN

Infinity*Infinity=Infinity, 
Infinity / Infinity = NaN

-Infinity + -Infinity = -Infinity, 
-Infinity - -Infinity = NaN,

-Infinity * -Infinity = Infinity, 
-Infinity / -Infinity = NaN

Infinity / 0 = Infinity, 
-Infinity / 0 = -Infinity

Infinity / 1.0 = Infinity, 
Infinity / -1.0 = -Infinity,
-Infinity / 1.0 = -Infinity, 
-Infinity / -1.0 = Infinity

5)有限數與Infinity、-Infinity的運算:
1.0 / Infinity = 0.0, 
-1.0 / Infinity = 0.0, 
1.0 / -Infinity = -0.0, 
-1.0/Infinity = -0.0

6)零與Infinity、-Infinity的運算:
0 / Infinity = 0.0, 
0 / -Infinity = -0.0

編碼測試:

NanInfinity.java執行結果,如圖1所示,


圖1

程式原始碼:

public class NanInfinity
{
public static void main(String[] args)
{
double dPos = Double.POSITIVE_INFINITY;
double dNeg=Double.NEGATIVE_INFINITY;

System.out.println(dPos);
System.out.println(dNeg);

System.out.println(dPos*dPos);
System.out.println(dPos/dPos);
System.out.println(dPos*0);
System.out.println(dPos/0);
System.out.println(dPos*1);
System.out.println(dPos/1);
System.out.println(0/dPos);
System.out.println(1/dPos);
}
}

我在網上找到了一篇關於Java中的NAN和INFINITY的文章,如果想進一步瞭解,可以點選連結https://blog.csdn.net/u014591781/article/details/52904867