如何向上取整一个数字?

801 投票
31 回答
1582228 浏览
提问于 2025-04-15 19:52

在Python中,怎么把一个数字向上取整呢?

我试过用 round(number),但它却是把数字向下取整。这里有个例子:

round(2.3) = 2.0 

我其实想要的是3,而不是这个。

然后我又试了 int(number + .5),结果它还是把数字向下取整!这是个例子:

int(2.3 + .5) = 2

31 个回答

201

如果你在处理整数,有一种向上取整的方法就是利用 // 这个运算符总是向下取整的特点:你可以先对负数进行除法运算,然后再把结果变成正数。这样做不需要引入额外的库,也不需要使用浮点数或条件判断。

rounded_up = -(-numerator // denominator)

举个例子:

>>> print(-(-101 // 5))
21
329

我知道这个回答是针对之前的问题,不过如果你不想导入数学库,只想向上取整,这个方法对我来说很好用。

>>> int(21 / 5)
4
>>> int(21 / 5) + (21 % 5 > 0)
5

第一部分的结果是4,第二部分如果有余数就会变成“真”,在这里“真”相当于1,而“假”相当于0。所以如果没有余数,结果就保持原来的整数;但如果有余数,就会加1。

1304

math.ceil(向上取整)这个函数会返回一个比x大或者等于x的最小整数。

对于Python 3:

import math
print(math.ceil(4.2))

对于Python 2:

import math
print(int(math.ceil(4.2)))

撰写回答