Java 将0与双最小值进行比较

Java 将0与双最小值进行比较,java,Java,为什么下面的返回为假 int i = 0; if ((double) i > Double.MIN_VALUE) System.out.print("true"); else System.out.print("false"); 因为Double.MIN\u值为正和非零。根据: 最小值: 包含double类型的最小正非零值的常数, 2-1074. 它等于十六进制浮点文字 0x0.0000000000001P-1022,也等于 Double.longBitsToDouble

为什么下面的返回为假

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

因为
Double.MIN\u值
非零。根据:

最小值: 包含double类型的最小正非零值的常数, 2-1074. 它等于十六进制浮点文字 0x0.0000000000001P-1022,也等于 Double.longBitsToDouble(0x1L)


因为
Double.MIN\u值
非零。根据:

最小值: 包含double类型的最小正非零值的常数, 2-1074. 它等于十六进制浮点文字 0x0.0000000000001P-1022,也等于 Double.longBitsToDouble(0x1L)


好的,让我们看看我们从Double.MIN_值得到了什么。当我们说,

System.out.println(Double.MIN_VALUE);
它打印出最小双精度值为4.9E-324,即非零

在代码中将其与0进行比较。即使4.9E-324有多小,它仍然大于0

如果你想找到你能得到的最小的负二倍,那么你在寻找

System.out.println(-Double.MIN_VALUE);

这将返回
-4.9E-324
,这是使用
Double
可以得到的最小负数。好的,让我们看看从Double.MIN\u值中得到了什么。当我们说,

System.out.println(Double.MIN_VALUE);
它打印出最小双精度值为4.9E-324,即非零

在代码中将其与0进行比较。即使4.9E-324有多小,它仍然大于0

如果你想找到你能得到的最小的负二倍,那么你在寻找

System.out.println(-Double.MIN_VALUE);
这将返回
-4.9E-324
,这是使用
Double
可以得到的最小负数