我只是了解到NaN
是unordered
,我只是在玩Float
和Double 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"