-5

为什么是 Math.floor(Double.MIN_VALUE) == 0 ?任何人都可以向我发送 Floor 函数的 java algorithme 或者至少解释一下这个结果吗?

4

1 回答 1

16

Double.MIN_VALUE并不意味着你认为它意味着什么。它的意思是“最小的正值double”——所以很自然地,当你取它的“下限”(小于或等于该值的最大整数)时,你会得到 0。文档:

一个保持双精度类型的最小正非零值 2 -1074的常数。它等于十六进制浮点文字 0x0.0000000000001P-1022,也等于 Double.longBitsToDouble(0x1L)。

我同意这个名称令人困惑,但一旦你看到令人困惑的行为,总是值得检查文档。

如果您想获得“最低”的有限double,只需使用-double.MAX_VALUE.

于 2012-05-13T07:07:58.570 回答