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的最小值,那么你可以使用-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 _∞
,但我忽略了这一点,因为它被视为“特殊情况”,实际上并不代表任何实际数字。)
这些常数与符号无关。如果你把一个“双”作为三个部分的组合:符号、指数和尾数,这就更有意义了。
Double.MIN_值实际上是指在齐平到零之前,当指数处于最小值时尾数可以假定的最小值。同样地,MAX_值可以理解为尾数的最大值,当指数处于最大值时,尾数可以假定,然后冲入无穷大
这两个更具描述性的名称可以是最大绝对值(verpositiy加非零)和最小绝对值(verpositiy加非无穷大)
有关详细信息,请查看标准。有一个修订版(2008年),但它只引入了更多甚至不受java支持的格式(严格来说,java甚至不支持IEEE 754 1985的一些强制性功能,就像许多其他高级语言一样)。我假设混淆的名称可能是,它被定义为最小的正数
就像在Java中,您必须使用-Double.MAX_VALUE
,您必须使用以获得C中最小的浮点值。如
Double.MIN_值是一个常数,它包含Double类型2^(-1074)的最小正值非零值
这里的诀窍是我们讨论的是浮点数表示法。双精度数据类型是双精度64位IEEE 754浮点。浮点数表示从10000000000到0.0000000000001的数字,同时最大化刻度两端的精度(位数)。(详情请参阅)
尾数始终为正数,包含浮点数的有效数字。指数表示尾数和符号应乘以的基数的正幂或负幂。将这四个组件组合起来以获得浮点值
认为minu值是尾数可以表示的最小值。因为浮点表示法的最小值是可以用它表示的最小值。(本可以用一个更好的名字来避免这种混淆)
123>10>1>0.12>0.012>0.0000123>0.000000001>0.0000000000000001
以下仅供参考
双精度浮点可以表示从2^-1074到2^1023的2098次二的幂。二的非规范化幂是从2^-1074到2^-1023的幂;2的归一化幂是从2^-1022到2^-1023的幂。请参阅和。好,但是为什么使用Double.MAX\u值有意义呢?这似乎定义得很清楚。因为它是最大精确值(非无穷大),而不是它的符号。按照这个想法,它是双精度的最大值。最大值还是双精度。正无穷大?Double。最小值可以等于Double.NEGATIVE无穷大
@starblue,no.@mo seph,Double.正无穷大
+∞ > 一切和-∞ < everything@Colin赫伯特,你可能误解了我。在一个更好的世界中,Double.MIN_值
将等于Double.NEGATIVE_无穷大
,因为这样它将与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>.
*/