Math.ceil()用于向上取整,正确计算分页总数:int totalPages = (int) Math.ceil((double) totalCount / pageSize),需确保除法为double类型且pageSize>0。

Math.ceil() 的核心作用是向上取整,适合把“总条数 ÷ 每页条数”这种可能产生小数的结果,安全转为整数页数——只要还有剩余数据,哪怕只剩 1 条,也要多算 1 页。
理解分页总数的本质逻辑
分页总数 = 总记录数 ÷ 每页容量,向上取整。
例如:105 条数据,每页 10 条 → 105 / 10 = 10.5 → 向上取整得 11 页。
关键点:
- 不能用 (int) 强转或 Math.floor(),否则会丢页(如 10.9 变成 10);
- 不能用 Math.round(),它四舍五入(10.5 变 10,10.6 才变 11),不满足“有余就加一页”的业务要求。
正确使用 Math.ceil() 的写法
必须确保除法运算结果是 double 类型,否则整数除法会先截断小数,再向上取整就失效了:
- ✅ 正确: int totalPages = (int) Math.ceil((double) totalCount / pageSize);
- ❌ 错误: int totalPages = (int) Math.ceil(totalCount / pageSize);(若两者都是 int,105/10 得 10,再 ceil 还是 10)
- ⚠️ 注意:totalCount 和 pageSize 都应 > 0;若 pageSize ≤ 0,需提前校验并抛异常或返回 0
封装为可复用的工具方法
推荐提取成静态方法,增强健壮性和可读性:
- 检查参数合法性(totalCount ≥ 0,pageSize > 0)
- totalCount 为 0 时,直接返回 0(0 条数据 = 0 页,而非 1 页)
- 使用 double 运算 + Math.ceil + 显式强转
示例:
立即学习“Java免费学习笔记(深入)”;
public static int calculateTotalPages(int totalCount, int pageSize) {if (pageSize if (totalCount return (int) Math.ceil((double) totalCount / pageSize);
}
常见边界情况验证
测试几个典型输入,确认逻辑无漏洞:
- totalCount = 0 → totalPages = 0
- totalCount = 1, pageSize = 10 → 0.1 → ceil = 1
- totalCount = 20, pageSize = 20 → 1.0 → ceil = 1
- totalCount = 21, pageSize = 20 → 1.05 → ceil = 2
- totalCount = 100, pageSize = 1 → 100.0 → ceil = 100


















