为什么自动装箱/拆箱失败?

Chi*_*ick 7 java autoboxing

在下面的程序中,结果被认为0.0是小于Double.MIN_VALUE.为什么?

我们有一个解决方案(Doubles仅使用和使用compareTo),我想了解为什么拆箱在这里失败.

import java.util.Date;
import java.util.Calendar;
import java.math.BigDecimal;

public class Test {

  public static void main(String[] args) {
    double max = 99999.9999;
    double min = Double.MIN_VALUE;
    Double test = 0.0;

    System.out.println(max > test); // expect true; is true
    System.out.println(test > min); // expect true; is false
  }
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*men 11

根据Javadocs:

MIN_VALUE

保持double类型的最小正非零值的常量,2 -1074.

换句话说,它大于0.


use*_*421 5

您应该阅读Double.MIN_VALUE规范.它是最小可能但正双值,这意味着它大于0.0.

A constant holding the smallest positive nonzero value of type double, 2-1074.
It is equal to the hexadecimal floating-point literal 0x0.0000000000001P-1022
and also equal to Double.longBitsToDouble(0x1L). 
Run Code Online (Sandbox Code Playgroud)