我查看了java.lang.Double该类的实现。的值NaN是 的指定值0x7ff8000000000000L。如果 JVM 确实以这种方式实现它,则 该public static final double NaN字段设置为0.0d / 0.0应该评估的字段。0x7ff8000000000000L
为什么
0x7ff8000000000000L选择这个值 ( )?该值有什么特别之处(例如它的位掩码)吗?为什么该字段隐式设置为该值并取决于操作的底层实现,
0.0d / 0.0而静态方法public static long doubleToLongBits(double value)将值显式设置0x7ff8000000000000L为NaN参数?由于0.0d / 0.0高度依赖于JVM的实现并且理论上可以更改(很可能永远不会),因此隐式设置它不是更安全吗?
POSITIVE_INFINITY和也是如此NEGATIVE_INFINITY。字段被隐式设置为其值,但某些方法使用显式指定的值。这背后有什么原因吗?
感谢您帮助我每天学习新事物:-)。