一尘不染

为什么Double.MIN_VALUE不是负数

java

任何人都可以阐明为什么Double.MIN_VALUEDoubles实际不能使用的最小值吗?它是一个正值,而Double可以当然是负值。

我理解为什么它是一个有用的数字,但它似乎是一个非常不直观的名称,尤其是与相比Integer.MIN_VALUE
调用它Double.SMALLEST_POSITIVEMIN_INCREMENT类似名称将具有更清晰的语义。

另外,Doubles可以取的最小值是多少?是-Double.MAX_VALUE吗 该文档似乎没有说。


阅读 644

收藏
2020-12-03

共1个答案

一尘不染

IEEE 754格式保留一位用于符号,其余位表示幅度。这意味着它在origo周围是“对称的”(与具有另一个负值的Integer值相反)。因此,最低值就是一样的最大值,用符号位改变,所以是的,-Double.MAX_VALUE是你可以用一个代表最小的实际数量double。

我想Double.MAX_VALUE应该将其视为最大幅度,在这种情况下,简单地写实际上是有意义的-Double.MAX_VALUE。它还说明了为什么Double.MIN_VALUE正值最小(因为它表示最小的可能值)。

但是可以肯定的是,我同意命名有点误导。习惯了这个含义Integer.MIN_VALUE,当我读到那Double.MIN_VALUE是可以表示的最小绝对值时,我也感到有些惊讶。也许他们认为用常数表示最小可能值是多余的,因为它只是-远离MAX_VALUE:-)

(请注意,这里也有,Double.NEGATIVE_INFINITY但我不予理,,因为这被视为“特殊情况”,实际上并不代表任何实际数字。)

2020-12-03