Java NaN等于0吗?

Java NaN等于0吗?,java,nan,Java,Nan,我试过这个: int x = (int)Math.sqrt(-1); //Math.sqrt(-1) returns NaN System.out.println(x); 输出为: 0 他说: 将NaN转换为整数类型,或执行浮点等效值将产生NaN的整数操作,通常会引发异常。在Java中,这样的操作会抛出Java.lang.arithmetricException 但是我的代码运行良好,没有任何异常,并且输出为0 有什么原因吗?没有,NaN不等于任何东西,包括它本身 当将NaN强制转换为int时

我试过这个:

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

0

他说:

NaN
转换为整数类型,或执行浮点等效值将产生
NaN
的整数操作,通常会引发异常。在Java中,这样的操作会抛出
Java.lang.arithmetricException

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


有什么原因吗?

没有,NaN不等于任何东西,包括它本身


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

不,NaN不等于任何东西,包括它本身


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

那么为什么我的代码给出了输出
0
?@Bathsheba尽管这回答了标题中的问题,解释代码段以上述方式运行的原因会很有帮助。@Hackerdarshi the涵盖了这一点。那么为什么我的代码会给出输出
0
?@Bathsheba尽管这回答了标题中的问题,解释代码段以上述方式运行的原因将很有帮助。@Hackerdarshi the涵盖了这一点。