我正在学习关于Java的新知识,我遇到了一个问题:类型double
的最小有限值是多少?答案是Double.NEGATIVE_INFINITY
吗?
答案 0 :(得分:3)
Double.NEGATIVE_INFINITY
不是有限值,因此它不能是double类型的最小有限值。
Double.MIN_VALUE
也是不 double类型的最小有限值,因为它是
最小正类型为double的非零值
double类型的最小有限值是-Double.MAX_VALUE
,其值为-1.79769313348623157E308
,或 - (2-2 -52 )* 2 1023 或Double.longBitsToDouble(0xffefffffffffffffL)
。
这可以根据JLS 4.2.3. Floating-Point Types, Formats, and Values:
计算得出任何浮点值集的有限非零值都可以表示为s·m·2 (e - N + 1),其中s为+1或-1, m是小于2 N 的正整数,e是Emin = - (2 K-1 -2)和Emax = 2 K-之间的整数。 1 -1,包括在内。
适用于double
,Emax==1023
和N==53
。
当你在s·m·2 (e - N + 1)中指定值s = -1,m = 2 N -1且e = Emax ,得到最小有限值:-1 *(2 53 -1)* 2 (1023 - 53 + 1) = - (2 - 2 - 52 )* 2 1023 。
答案 1 :(得分:1)
双倍的有限范围是4.9E-324到1.7e + 038。 Double.NEGATIVE_INFINITY只是由ieee floating point specification
定义的内容public static final double NEGATIVE_INFINITY
持有double类型的负无穷大的常量。它是平等的 到Double.longBitsToDouble(0xfff0000000000000L)返回的值
答案 2 :(得分:0)
double类型的最小正有限非零值是4.9e-324 最小的负有限值是-1.7976931348623157E308 您可以参考Java Language Specification of double。