NaN等于0吗?

时间:2016-02-01 12:48:47

标签: java nan

我试过了:

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

有什么理由吗?

1 个答案:

答案 0 :(得分:3)

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

将NaN强制转换为int时,JVM将舍入为零。这解释了你观察到的0的输出。