繁体   English   中英

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

[英]Why is autoboxing/unboxing failing here?

在下面的程序中,结果是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
  }
}

根据Javadocs

MIN_VALUE

拥有double类型2 -1074的最小正非零值的常数

换句话说,它大于0。

您应该阅读Double.MIN_VALUE规范。 这是一个可能的最小值,但正Double值表示大于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). 

Double.MIN_VALUE = 4.9E-324仍为正数。 我认为您正在寻找min = - Double.MAX_VALUE

据我说,自动装箱没有问题。 也许您只需要使用类似于<。>运算符的Double.NEGATIVE_INFINITY或Double.POSITIVE_INFINITY之类的东西。 例如注意

-Double.MAX_VALUE > Double.NEGATIVE_INFINITY
是真的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM