一尘不染

为什么Double.MIN_VALUE不为负

java

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

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

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


阅读 1059

收藏
2020-03-23

共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-03-23