当我调用Math.ceil(5.2) ,返回值是double 6.0 。 我的自然倾向是认为Math.ceil(double a)会返回一个long 。 从文档: ceil(double a) 返回不小于参数的最小(最接近负无穷大) double值,它等于一个math整数。 但是当结果是一个整数时为什么返回一个double而不是long呢? 我认为了解它背后的原因可能会帮助我更好地理解Java。 这也可能帮助我弄清楚,如果我将自己陷入困境,铸造到一个long ,例如 long b = (long)Math.ceil(a); 总是我认为应该是什么? 我担心会出现一些有问题的边界案例。