首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Double.NaN==Double.NaN返回false?

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

Stack Overflow用户
提问于 2012-01-11 21:02:31
回答 5查看 65.9K关注 0票数 156

我正在研究OCPJP的问题,我发现了这个奇怪的代码:

代码语言:javascript
复制
public static void main(String a[]) {
    System.out.println(Double.NaN==Double.NaN);
    System.out.println(Double.NaN!=Double.NaN);
}

当我运行代码时,我得到了:

代码语言:javascript
复制
false
true

当我们比较两个看起来相同的东西时,输出的false是怎样的?NaN是什么意思?

EN

回答 5

Stack Overflow用户

发布于 2015-10-01 22:08:30

这可能不是这个问题的直接答案。但是如果你想检查某些东西是否等于Double.NaN,你应该使用下面的代码:

代码语言:javascript
复制
double d = Double.NaN
Double.isNaN(d);

这将返回true

票数 17
EN

Stack Overflow用户

发布于 2012-01-11 21:04:10

NaN是一个特殊的值,表示“不是数字”;它是某些无效算术运算的结果,比如sqrt(-1),并且具有NaN != NaN (有时令人讨厌)属性。

票数 3
EN

Stack Overflow用户

发布于 2012-01-11 21:07:16

非数字表示其结果不能用数字表示的运算的结果。最著名的操作是0/0,其结果是未知的。

因此,NaN不等于任何值(包括其他非数字的值)。更多信息,请查看维基百科页面:http://en.wikipedia.org/wiki/NaN

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8819738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档