为什么以下内容返回false?
int i = 0;
if ((double) i > Double.MIN_VALUE)
System.out.print("true");
else
System.out.print("false");
答案 0 :(得分:4)
因为Double.MIN_VALUE
是正和非零。根据{{3}}:
MIN_VALUE: 一个常数,它具有double类型的最小正非零值, 2-1074。它等于十六进制浮点文字 0x0.0000000000001P-1022并且也等于 Double.longBitsToDouble(0x1L)。
答案 1 :(得分:1)
好的,让我们看看我们从Double.MIN_VALUE中获得了什么。当我们说
System.out.println(Double.MIN_VALUE);
它打印出最小双精度值是4.9E-324,它是正值和非零值。
在您的代码中将其与0进行比较。即使4.9E-324很小,它仍大于0。
如果您试图找到可以得到的最小负双,那么您正在寻找,
System.out.println(-Double.MIN_VALUE);
这将返回-4.9E-324
,这是Double
可以得到的最小的负数。