当我打电话Math.ceil(5.2)回是double 6.0。我的天生的倾向是认为那Math.ceil(double a)会返回long。从文档中: ceil(double a) 返回double不小于参数且等于数学整数的最小(最接近负无穷大)值。 但是,如果结果是整数,为什么要返回adouble而不是a long?我认为了解其背后的原因可能会帮助我更好地理解Java。这也可能帮助我弄清楚是否会因强制转换为而使自己陷入困境long,例如is long b = (long)Math.ceil(a); 我一直认为应该是什么?我担心可能会出现一些边界问题。