Java 为什么Double.MIN_值不是负值

Java 为什么Double.MIN_值不是负值,java,numbers,floating-point,Java,Numbers,Floating Point,谁能解释一下为什么Double.MIN\u值实际上不是Double可以接受的最小值?它是一个正值,双精度当然可以是负值 我理解为什么它是一个有用的数字,但它似乎是一个非常不直观的名称,尤其是与Integer.MIN_VALUE相比。称之为Double.minimum\u POSITIVE或MIN\u INCREMENT或类似的将具有更清晰的语义 另外,Double可以接受的最小值是多少?是否为-Double.MAX_值?文档似乎没有说。双精度的最小值是double。负无限这就是为什么double

谁能解释一下为什么
Double.MIN\u值实际上不是Double可以接受的最小值?它是一个正值,双精度当然可以是负值

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


另外,Double可以接受的最小值是多少?是否为
-Double.MAX_值
?文档似乎没有说。

双精度的最小值是
double。负无限
这就是为什么
double。最小值不是
double
的最小值

由于double是浮点数,因此只能有最大的数字(精度较低)或最接近0的数字(精度较高)


如果你真的想要一个不是无穷大的双精度的最小值,那么你可以使用
-double.MAX\u value
双精度的最小值是
double。负的
这就是为什么
double.MIN\u value
不是
双精度的最小值

由于double是浮点数,因此只能有最大的数字(精度较低)或最接近0的数字(精度较高)


如果你真的想要一个不是无穷大的double的最小值,那么你可以使用
-double.MAX_value

,因为对于浮点数,精度是很重要的,因为没有精确的范围


但是我同意应该给它起个更好的名字:)

因为对于浮点数来说,精度非常重要,因为没有精确的范围


但我同意,它应该被命名为更好的名称:)

IEEE 754格式为符号保留了一位,其余的位表示大小。这意味着它是围绕origo“对称”的(与整数值相反,整数值又有一个负值)。因此,随着符号位的改变,最小值与最大值完全相同,因此yes
-Double。MAX_value
是可以用
Double
表示的最小实际数


我认为
Double.MAX\u值
应该被视为最大值,在这种情况下,只需编写
-Double.MAX\u值
就可以了。它还解释了为什么
Double.MIN_值
是最小的正值(因为它代表了最小的可能大小)


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

(注意,也有
Double.NEGATIVE _∞
,但我忽略了这一点,因为它被视为“特殊情况”,实际上并不代表任何实际数字。)


IEEE 754格式为符号保留了一位,其余的位表示大小。这意味着它是围绕origo“对称”的(与整数值相反,整数值又有一个负值)。因此,随着符号位的改变,最小值与最大值完全相同,因此yes
-Double。MAX_value
是可以用
Double
表示的最小实际数


我认为
Double.MAX\u值
应该被视为最大值,在这种情况下,只需编写
-Double.MAX\u值
就可以了。它还解释了为什么
Double.MIN_值
是最小的正值(因为它代表了最小的可能大小)


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

(注意,也有
Double.NEGATIVE _∞
,但我忽略了这一点,因为它被视为“特殊情况”,实际上并不代表任何实际数字。)


这些常数与符号无关。如果你把一个“双”作为三个部分的组合:符号、指数和尾数,这就更有意义了。 Double.MIN_值实际上是指在齐平到零之前,当指数处于最小值时尾数可以假定的最小值。同样地,MAX_值可以理解为尾数的最大值,当指数处于最大值时,尾数可以假定,然后冲入无穷大

这两个更具描述性的名称可以是最大绝对值(verpositiy加非零)和最小绝对值(verpositiy加非无穷大)


有关详细信息,请查看标准。有一个修订版(2008年),但它只引入了更多java甚至不支持的格式(严格来说,java甚至不支持IEEE 754 1985的某些强制性功能,就像许多其他高级语言一样)。

这些常量与符号无关。如果你把一个“双”作为三个部分的组合:符号、指数和尾数,这就更有意义了。 Double.MIN_值实际上是指在齐平到零之前,当指数处于最小值时尾数可以假定的最小值。锂
/**
 * A constant holding the smallest positive nonzero value of type
 * <code>double</code>, 2<sup>-1074</sup>. It is equal to the
 * hexadecimal floating-point literal
 * <code>0x0.0000000000001P-1022</code> and also equal to
 * <code>Double.longBitsToDouble(0x1L)</code>.
 */