Java中NAN与INFINITY参与运算的情况
java浮点数运算中有两个特殊的情况:NAN、INFINITY。
Nan:不是一个数
Infinity:无穷大
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 / 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
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);
}
}