math.ceil 是 java 中向上取整的静态方法,返回大于或等于参数的最小 double 值;对负数如 -2.7 返回 -2.0,需显式强转才能赋值给 int,推荐整数场景用 (a + b - 1) / b 替代。

Math.ceil 是 Java 中用于向上取整的静态方法,它返回大于或等于参数的最小整数,结果类型为 double。
基本用法和返回值类型
该方法定义在 java.lang.Math 类中,无需导入,直接调用即可。注意:无论输入是 float 还是 double,返回值始终是 double 类型。
-
Math.ceil(3.2)→ 返回4.0 -
Math.ceil(-2.7)→ 返回-2.0(向上取整是朝正无穷方向,不是“绝对值变大”) -
Math.ceil(5.0)→ 返回5.0(整数保持不变)
常见误用与注意事项
容易混淆的是负数行为:向上取整是向数轴右侧(正无穷)靠近,所以 -2.7 的向上取整是 -2.0,而不是 -3.0。
- 不要直接赋值给
int变量,会编译报错(double不能隐式转int) - 如需整数结果,需显式强转:
(int) Math.ceil(3.2)→ 得到4(但注意可能溢出) - 对
NaN、正/负无穷等特殊值有明确定义,一般按 IEEE 754 处理
实际使用建议
常用于分页计算、资源分配、数组扩容等场景,比如计算需要多少页来展示数据:
- 总记录数
total = 100,每页pageSize = 12,则页数:(int) Math.ceil((double) total / pageSize)→9 - 务必先将整数运算转为
double,避免整数除法截断(如100 / 12得8,再ceil仍是8.0) - 若操作的是
long值且可能超int范围,建议用long接收再处理,避免强转丢失精度
替代写法(整数安全版)
如果只处理非负整数,可避免浮点运算,用整数公式代替:
-
(a + b - 1) / b等价于ceil(a / b)(当a ≥ 0, b > 0) - 例如:
(100 + 12 - 1) / 12→111 / 12→9 - 该方式无浮点误差,也无需类型转换,适合性能敏感或纯整数场景
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











