为什么 Math.floor 会返回双精度值?
官方Javadoc说返回一个“等于数学整数”,但是为什么它不应该返回一个?Math.floor()
double
int
官方Javadoc说返回一个“等于数学整数”,但是为什么它不应该返回一个?Math.floor()
double
int
根据同一个Javadoc:
如果参数是无穷大、正零或负零,则结果与参数相同。不能用 .NaN
int
最大值也大于最大值,因此它必须是 。double
int
long
这是为了精确。双精度数据类型具有 53 位尾数。除此之外,这意味着双精度可以表示所有整体,最高可达2 ^ 53。
如果将如此大的数字存储在整数中,则会出现溢出。整数只有 32 位。
将整数作为双精度值返回是正确的做法,因为它提供了比整数更宽的有用数字范围。