[英]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
}
}
您应该阅读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.