在下面的程序中,结果是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
}
}
答案 0 :(得分:11)
答案 1 :(得分:5)
您应该阅读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).
答案 2 :(得分:2)
Double.MIN_VALUE = 4.9E-324
这仍然是一个正数。我想你正在寻找min = - Double.MAX_VALUE
答案 3 :(得分:2)
根据我的说法,autoboxing没有问题。 也许您只需要使用Double.NEGATIVE_INFINITY或Double.POSITIVE_INFINITY之类的东西,它应该与<和>运营商。例如,请注意
-Double.MAX_VALUE > Double.NEGATIVE_INFINITY为真!