谁能阐明为什么 Double.MIN_VALUE
实际上不是 Doubles 可以采用的最小值?它是一个正值,而 Double 当然可以是负值。
我明白为什么它是一个有用的数字,但它似乎是一个非常不直观的名称,尤其是与 Integer.MIN_VALUE
相比时。调用它 Double.SMALLEST_POSITIVE
或 MIN_INCREMENT
或类似的将有更清晰的语义。
另外,Doubles 可以取的最小值是多少?是 -Double.MAX_VALUE
吗?文档似乎没有说。
原文由 mo-seph 发布,翻译遵循 CC BY-SA 4.0 许可协议
IEEE 754 格式保留一位用于符号,其余位表示幅度。这意味着它围绕 origo 是“对称的”(与具有多一个负值的整数值相反)。因此,最小值与最大值完全相同,符号位翻转,所以 是 的,
-Double.MAX_VALUE
是你可以用double
表示的最低实际数字。我想
Double.MAX_VALUE
应该被视为 最大幅度,在这种情况下,简单地写-Double.MAX_VALUE
实际上是有意义的。它还解释了为什么Double.MIN_VALUE
是最小的正值(因为它代表最小可能的幅度)。但可以肯定的是,我同意命名有点误导。习惯了
Integer.MIN_VALUE
的意思,读到Double.MIN_VALUE
是可以表示的最小 绝对值 时,我也有点惊讶。也许他们认为用一个代表最小可能值的常数是多余的,因为它只是一个-
远离MAX_VALUE
:-)(注意,还有
Double.NEGATIVE_INFINITY
但我无视这一点,因为它被视为“特例”,实际上并不代表任何实际数字。)这 是一篇关于这个主题的好文章。