1 package javap.fload; 2 3 import static jdk.nashorn.internal.objects.Global.Infinity; 4 5 public class FloatTest { 6 public static void main(String[] args) { 7 System.out.println(+0.0F == -0.0F); 8 System.out.println(Float.intBitsToFloat(0x8000000) == -0.0F); 9 10 float res = (float) (1.2 / -0.0F); 11 System.out.println(1.2 / -0.0F); // -Infinity负无穷,任意正浮点数除以 -0.0F 得到的值 12 System.out.println(1.3 / 0.0F); // Infinity正无穷,任意正浮点数(不包括 +0.0F)除以 +0.0F 得到的值 13 System.out.println(0.0F / 0.0F); // Not-a-Number 14 15 /** 16 * 正无穷+1,还是等于正无穷 17 */ 18 System.out.println("Infinity+1=" + (Infinity+1)); 19 20 21 /** 22 * NaN 有一个有趣的特性:除了“!=”始终返回 true 之外,所有其他比较结果都会返回 false。 23 * 例来说,“NaN<1.0F”返回 false,而“NaN>=1.0F”同样返回 false。 24 * 对于任意浮点数 f,不管它是 0 还是 NaN,“f!=NaN”始终会返回 true,而“f==NaN”始终会返回 false。 25 */ 26 // 因此,我们在程序里做浮点数比较的时候,需要考虑上述特性。在本专栏的第二部分,我会介绍这个特性给向量化比较带来什么麻烦 27 float f = 1.0F; 28 if (f != Float.NaN) { // 返回true,其余比较返回false 29 System.out.println("f != Float.NaN"); 30 } 31 if (f < Float.NaN) { 32 System.out.println("f < Float.NaN"); 33 } 34 35 } 36 }
结果:
true
false
-Infinity
Infinity
NaN
Infinity+1=Infinity
Infinity
f != Float.NaN
参考文献:https://time.geekbang.org/column/article/11503
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。