为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Double.NaN == Double.NaN返回false?

为什么Double.NaN == Double.NaN返回false?

繁星淼淼 2019-10-17 15:25:06
我刚刚研究OCPJP问题,发现了这个奇怪的代码:public static void main(String a[]) {    System.out.println(Double.NaN==Double.NaN);    System.out.println(Double.NaN!=Double.NaN);}运行代码时,我得到:falsetruefalse当我们比较看起来彼此相同的两件事时,输出如何?什么NaN意思
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

NaN的意思是“不是数字”。


Java语言规范(JLS)第三版说:


溢出的操作将生成有符号无穷大,下溢的操作将生成非规范化的值或有符号的零,而在数学上没有确定结果的操作将生成NaN。以NaN作为操作数的所有数值运算都会产生NaN。如前所述,NaN是无序的,因此涉及一个或两个NaN返回值false以及!=涉及NaN返回值的任何比较true(包括x!=xwhen x是NaN)的数值比较操作。


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 1718 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信