较小的有限值double - Java

时间:2017-08-27 13:35:52

标签: java double

我正在学习关于Java的新知识,我遇到了一个问题:类型double的最小有限值是多少?答案是Double.NEGATIVE_INFINITY吗?

3 个答案:

答案 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,包括在内。

适用于doubleEmax==1023N==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