比较0和Double min值

时间:2018-09-26 05:35:57

标签: java

为什么以下内容返回false?

int i = 0;
if ((double) i > Double.MIN_VALUE)
    System.out.print("true");
else
    System.out.print("false");

2 个答案:

答案 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可以得到的最小的负数。