Guava中DoubleMath.isMathematicalInteger(Double.MAX_VALUE)返回true是否正确?
关于Guava DoubleMath.isMathematicalInteger的结果疑问解答
为什么DoubleMath.isMathematicalInteger(Double.MAX_VALUE)返回true?
这是完全正确的结果。Double.MAX_VALUE的实际值是(2 - 2^-52) * 2^1023,展开后为2^1024 - 2^971——这是两个2的整数次幂的差值,结果必然是整数。isMathematicalInteger方法的作用就是判断一个浮点数是否对应数学意义上的整数,所以返回true完全符合预期。
为什么DoubleMath.isMathematicalInteger(Double.MIN_VALUE)返回false?
这也是正确的结果。Double.MIN_VALUE是双精度浮点数能表示的最小正非零值,数值为2^-1074,这是一个远小于1的正数,显然不属于整数范畴(整数包含正整数、0、负整数),因此方法返回false是合理的。
内容的提问来源于stack exchange,提问作者user900699
相关产品推荐
相关产品推荐

