python向上取整的方法汇总

张开发
2026/4/17 12:59:15 15 分钟阅读

分享文章

python向上取整的方法汇总
在 Python 中向上取整Ceiling主要有以下几种方法根据你的使用场景选择最合适的方法一使用math.ceil()最标准、最推荐这是 Python 标准库math模块提供的函数专门用于向上取整。特点返回大于或等于原数的最小整数。返回值类型为intPython 3 中。对于负数也是向“正无穷”方向取整例如 -3.2 向上取整是 -3。importmath# 正数print(math.ceil(3.2))# 输出: 4print(math.ceil(3.9))# 输出: 4print(math.ceil(3.0))# 输出: 3# 负数注意向上取整是往数轴右边取整print(math.ceil(-3.2))# 输出: -3print(math.ceil(-3.9))# 输出: -3# 整数print(math.ceil(5))# 输出: 5方法二使用numpy.ceil()适合数组/科学计算如果你在处理 NumPy 数组或需要进行向量化计算使用 NumPy 的函数效率更高。特点可以对单个数字或整个数组进行操作。返回值是浮点数float即使结果是整数例如 4.0。importnumpyasnp# 单个数字print(np.ceil(3.2))# 输出: 4.0print(np.ceil(-3.2))# 输出: -3.0# 数组批量处理arrnp.array([1.2,2.5,3.7,-1.5])resultnp.ceil(arr)print(result)# 输出: [ 2. 3. 4. -1.]print(result.dtype)# 输出: float64方法三使用整数运算技巧不依赖 math 库在某些性能敏感或不能导入库的场景下可以用纯数学运算实现。1. 对于正数的除法向上取整这是一个非常经典的技巧常用于分页计算计算总页数# 公式: (被除数 除数 - 1) // 除数a10b3# 10 / 3 3.333... 向上取整应该是 4result(ab-1)//bprint(result)# 输出: 4# 另一个例子items105page_size10pages(itemspage_size-1)//page_sizeprint(f需要{pages}页)# 输出: 需要 11 页2. 通用的向上取整不推荐仅作了解defcustom_ceil(x):# 如果 x 已经是整数直接返回ifxint(x):returnint(x)# 如果是正数整数部分1elifx0:returnint(x)1# 如果是负数直接取整数部分因为 -3.2 的整数部分是 -3已经是向上取整了else:returnint(x)print(custom_ceil(3.2))# 4print(custom_ceil(-3.2))# -3注意这种方法容易出错强烈建议直接使用math.ceil()。方法对比总结方法适用场景返回值类型备注math.ceil()通用场景单个数字int最推荐标准库清晰准确numpy.ceil()数组、矩阵、科学计算float批量处理效率高但结果是浮点数整数运算正数除法、分页计算int性能极高但只适用于特定场景常见误区向上取整 vs 四舍五入不要把向上取整ceil和四舍五入round搞混了importmath x3.2print(fmath.ceil(3.2) {math.ceil(3.2)})# 向上取整: 4 (往大了取)print(fround(3.2) {round(3.2)})# 四舍五入: 3 (看小数位)y3.7print(fmath.ceil(3.7) {math.ceil(3.7)})# 向上取整: 4print(fround(3.7) {round(3.7)})# 四舍五入: 4结论日常开发中请直接使用math.ceil()。

更多文章