我只是了解到NaN
是unordered
,我只是在玩Float
和Double NaN
,我尝试了以下代码段:
System.out.println("Comparing with isNaN method: " + Float.isNaN((float)Double.NaN));
我得到一个问题,如果NaN不是数字那么为什么允许铸造NaN。我想知道Architectural Level
时cast NaN value
发生了什么。
答案 0 :(得分:2)
在javadoc中你可以看到Double.NaN是Double类型的常量,所以你可以施放! Double.Nan是有效数字。 http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html
答案 1 :(得分:0)
投射时,一种类型的NaN映射到另一种类型的NaN。这是由CPU完成的,所以你在Java中看到的是“架构级”