如何向上取整一个数字?
在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)))