我试过了:
int x = (int)Math.sqrt(-1); //Math.sqrt(-1) returns NaN
System.out.println(x);
输出是:
0
将
的实例NaN
转换为整数类型,或执行浮点等效项将生成NaN
的整数运算,通常会抛出异常。在Java中,此类操作会抛出java.lang.ArithmeticException
但我的代码运行良好,没有任何异常,输出为0
。
有什么理由吗?
答案 0 :(得分:3)
不,NaN不等于任何东西,包括它自己。
将NaN强制转换为int
时,JVM将舍入为零。这解释了你观察到的0的输出。