Pen*_*One 73 java double ceil long-integer
当我打电话Math.ceil(5.2)
给退货的时候double
6.0
.我的自然倾向是认为Math.ceil(double a)
会回归long
.从文档:
ceil(double a)
返回
double
不小于参数且等于数学整数的最小(最接近负无穷大)值.
但是为什么当结果是整数时返回a double
而不是a long
?我认为理解它背后的原因可能会帮助我更好地理解Java.它也可以帮助我弄清楚我是否会因为施放到自己而陷入困境long
,例如是
long b = (long)Math.ceil(a);
总是我认为它应该是什么?我担心可能会出现一些有问题的边界情况.
Jon*_*eet 68
范围double
大于long
.例如:
double x = Long.MAX_VALUE;
x = x * 1000;
x = Math.ceil(x);
Run Code Online (Sandbox Code Playgroud)
如果Math.ceil
返回,你会期望最后一行做long
什么?
请注意,在非常大的值(正数或负数)下,数字最终会非常稀疏地分布 - 因此,如果您看到我的意思,那么下一个大于整数的整数x
将不会出现x + 1
.