为什么 Math.floor 会返回双精度值?

2022-08-31 08:59:32

官方Javadoc返回一个“等于数学整数”,但是为什么它不应该返回一个?Math.floor()doubleint


答案 1

根据同一个Javadoc:

如果参数是无穷大、正零或负零,则结果与参数相同。不能用 .NaNint

最大值也大于最大值,因此它必须是 。doubleintlong


答案 2

这是为了精确。双精度数据类型具有 53 位尾数。除此之外,这意味着双精度可以表示所有整体,最高可达2 ^ 53。

如果将如此大的数字存储在整数中,则会出现溢出。整数只有 32 位。

将整数作为双精度值返回是正确的做法,因为它提供了比整数更宽的有用数字范围。