【问题标题】:Is NaN equal to 0? [duplicate]NaN 等于 0 吗? [复制]
【发布时间】:2016-05-09 22:18:34
【问题描述】:

我试过这个:

int x = (int)Math.sqrt(-1); //Math.sqrt(-1) returns NaN
System.out.println(x);

输出是:

0

This Wikipedia article 说:

NaN 转换为整数类型,或执行其浮点等效值会产生NaN 的整数运算,通常会引发异常。在 Java 中,此类操作会抛出 java.lang.ArithmeticException 的实例

但我的代码运行良好,没有任何异常,输出为0

有什么理由吗?

【问题讨论】:

    标签: java nan


    【解决方案1】:

    不,NaN 不等于任何东西,包括它自己。

    当将 NaN 转换为 int 时,JVM 将向零应用舍入。这解释了您观察到的 0 的输出。

    【讨论】:

    • 那么为什么我的代码会输出0
    • @Bathsheba 虽然这回答了标题中的问题,但解释代码 sn-p 以上述方式运行的原因会有所帮助。
    • @Hackerdarshi question of which this question is a duplicate 涵盖了这个。
    猜你喜欢
    • 2012-04-19
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2019-05-28
    相关资源
    最近更新 更多