当我调用Math.ceil(5.2)
return 是double
6.0
. 我的自然倾向是认为这Math.ceil(double a)
会返回一个long
. 从文档中:
ceil(double a)
double
返回不小于参数且等于数学整数的最小(最接近负无穷大)值。
但是为什么当结果是整数时返回 adouble
而不是 a呢?long
我认为理解它背后的原因可能有助于我更好地理解 Java。它还可以帮助我弄清楚我是否会通过转换为 a 给自己带来麻烦long
,例如是
long b = (long)Math.ceil(a);
总是我认为它应该是什么?我担心可能存在一些有问题的边界情况。