我最近刚了解原始类型包装类中的常量,例如Double.POSITIVE_INFINITY
和Double.NEGATIVE_INFINITY
。在API中,第一个的定义如下:
保持double类型正无穷大的常量。它等于Double.longBitsToDouble(0x7ff0000000000000L)返回的值。
其他常量的定义也是这样。
我遇到的问题是理解这些常量实际上是什么。它们不能实际上是或代表正/负无穷大,因为系统本质上是有限的。这只是Java创建者决定用来定义无限概念的一些任意位设置吗?还是这些常量实际上具有某种特殊的价值?如果它只是被解释为double
的任意一串位,那么是否存在一些普通数字,当它被解释为double
时,将返回POSITIVE_INFINITY
而不是实际预期的任何值?
如果对于Double.longBitsToDouble(0x7ff0000000000000L)
部分的API来说答案很明显,请原谅我。说实话,对我来说,那个说明相当神秘,我不会假装理解十六进制值实际上意味着什么或代表什么。
n + ±Infinity = ±Infinity
也成立吗? - caub