首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.out.println(0.0%0.0!=0.0/0.0);输出将是什么?你能解释一下答案吗?

问System.out.println(0.0%0.0!=0.0/0.0);输出将是什么?你能解释一下答案吗?
EN

Stack Overflow用户
提问于 2014-10-17 05:58:55
回答 1查看 7.8K关注 0票数 1

我当时正在研究OCJP的问题,我发现了一个奇怪的代码:

代码语言:javascript
复制
public class abc {
    public static void main(String[] args) {


        System.out.println(0.0%0.0!=0.0/0.0);// it return true

        System.out.println(0.0%0.0==0.0/0.0);// it return false


    }

}

当我运行密码时,我得到:

代码语言:javascript
复制
true
false

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

EN

回答 1

Stack Overflow用户

发布于 2014-10-17 06:05:03

0.0 / 0.0和0.0 % 0.0都返回Double.NaN。

如果您比较Double.NaN == Double.NaN,您将收到false,这就是System.out.println(0.0%0.0==0.0/0.0);打印false的原因。

现在的问题是为什么Double.NaN == Double.NaN返回false

据JLS称:

浮点运算符不会产生任何例外(第11节)。溢出运算产生有符号无穷大,下溢运算产生非正规化值或符号零,没有数学确定结果的运算产生NaN。因此,所有以NaN作为操作数的数值操作都会产生NaN。如前所述,NaN是无序的,因此,涉及一个或两个NaNs的数值比较操作返回false,any != NaN返回true,包括x为NaN时的x!=x。

更多信息:

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

https://stackoverflow.com/questions/26418720

复制
相关文章

相似问题

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