为什么Double.NaN == Double.NaN返回false?
我刚刚研究OCPJP问题,发现了这个奇怪的代码:
public static void main(String a[]) { System.out.println(Double.NaN==Double.NaN);
System.out.println(Double.NaN!=Double.NaN);
}
运行代码时,我得到:
falsetrue
false
当我们比较看起来彼此相同的两件事时,输出如何?什么NaN意思
回答:
溢出的操作将生成有符号无穷大,下溢的操作将生成非规范化的值或有符号的零,而数学上没有确定结果的操作将生成NaN。将NaN作为操作数的所有数值运算都会产生NaN。如前所述,NaN是无序的,因此涉及一个或两个NaN返回的数值比较操作false
以及!=
涉及NaN返回的任何比较true
,包括x!=x
何时x
是NaN。
以上是 为什么Double.NaN == Double.NaN返回false? 的全部内容, 来源链接: utcz.com/qa/415333.html