Java 为什么Float.NaN==Float.NaN为false
为什么Java 为什么Float.NaN==Float.NaN为false,java,Java,为什么Float.NaN==Float.NaN给出false?我已经在多个JVM上测试了它 感谢您的帮助 System.out.println(Float.NaN == Float.NaN); // gives false 这不是Java特有的 根据合同,IEEE754不等于任何数量,甚至不等于它们自己 但谷歌搜索还不够……我想从我的脑海中找出原因,NaN被指定为不等于任何其他数字。(或者,事实上,不可压缩,但=不能表达这一点。)这难道不是检测NaN的最简单方法吗?如果数字本身不是NaN?
Float.NaN==Float.NaN
给出false
?我已经在多个JVM上测试了它
感谢您的帮助
System.out.println(Float.NaN == Float.NaN); // gives false
这不是Java特有的
根据合同,IEEE754不等于任何数量,甚至不等于它们自己 但谷歌搜索还不够……我想从我的脑海中找出原因,
NaN
被指定为不等于任何其他数字。(或者,事实上,不可压缩,但=
不能表达这一点。)这难道不是检测NaN的最简单方法吗?如果数字本身不是NaN?@TobiasLangner如维基百科所说:“等式和不等式谓词是非信号的,因此x=x返回false可以用来测试x是否是一个安静的NaN”。但是在您的代码中,最清晰的是使用Float.isNaN
。