Casting NaN value



我只是了解到NaNunordered,我只是在玩FloatDouble NaN,我尝试以下代码片段:

System.out.println("Comparing with isNaN method: " + Float.isNaN((float)Double.NaN));

我有一个问题,如果NaN不是一个数字,那么为什么允许NaN的铸造。我想知道Architectural Level发生了什么,当我cast NaN value .

在javadoc中可以看到Double。NaN是Double类型的常量,所以可以强制转换!翻倍。Nan是一个有效的数字。http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html

转换时,一种类型的NaN被映射到另一种类型的NaN。这是由CPU完成的所以你在Java中看到的是在" architecture Level"

最新更新