学过 JavaScript 的应该都知道,在 js 中的数值型 number 类型中有几个特殊的数,一个正无穷大、一个负无穷大、一个不是一个数 NaN。
后来无意中发现 java 中也有这三个数,不过这三个数是浮点数,不是整数。只有在浮点数中这这三个数才成立。看图分析:
正无穷 Infinity
负无穷 -Infinity
不是一个数 NaN
无穷乘以 0,结果为 NaN。
System.out.println(Float.POSITIVE_INFINITY * 0); // NaN
System.out.println(Float.NEGATIVE_INFINITY * 0); // NaN
无穷除以 0,结果还是无穷。
System.out.println(Float.POSITIVE_INFINITY / 0); // Infinity
System.out.println(Float.NEGATIVE_INFINITY / 0); // -Infinity
无穷做任何运算(除了乘以 0),结果还是无穷。
System.out.println(Float.POSITIVE_INFINITY + 10000); // Infinity
System.out.println(Float.POSITIVE_INFINITY - 10000); // Infinity
System.out.println(Float.POSITIVE_INFINITY * 10000); // Infinity
System.out.println(Float.POSITIVE_INFINITY / 10000); // Infinity
System.out.println(Float.NEGATIVE_INFINITY + 10000); // -Infinity
System.out.println(Float.NEGATIVE_INFINITY - 10000); // -Infinity
System.out.println(Float.NEGATIVE_INFINITY * 10000); // -Infinity
System.out.println(Float.NEGATIVE_INFINITY / 10000); // -Infinity
判断一个浮点数是否为无穷,可用 isInfinite() 方法。
System.out.println(Float.isInfinite(Float.POSITIVE_INFINITY)); // true
System.out.println(Float.isInfinite(Float.NEGATIVE_INFINITY)); // true
判断一个浮点数是否为 NaN,可用 isNaN() 方法。
System.out.println(Float.isNaN(Float.NaN)); // true
System.out.println(Double.isNaN(Double.NaN)); // true
NaN 表示非数字,它与任何值都不相等,甚至不等于它自己。
System.out.println(Float.NaN == Float.NaN); // false
System.out.println(Double.NaN == Double.NaN); // false
参考资料:
https://www.cnblogs.com/zhizhixiaoxia/p/10756317.html
https://www.cnblogs.com/zhisuoyu/archive/2016/03/24/5314541.html