如何在Python中四舍五入一个数字向上?

我试过四舍五入,但它把数字四舍五入了。例子:

round(2.3) = 2.0 

而不是我想要的3。

我尝试了int(number + .5),但它再次四舍五入!例子:

int(2.3 + .5) = 2

当前回答

你可以这样使用round:

cost_per_person = round(150 / 2, 2)

  

其他回答

的数学。函数返回大于或等于x的最小整数。

对于Python 3:

import math
print(math.ceil(4.2))

对于Python 2:

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

语法可能不像人们喜欢的那样python化,但它是一个功能强大的库。

https://docs.python.org/2/library/decimal.html

from decimal import *
print(int(Decimal(2.3).quantize(Decimal('1.'), rounding=ROUND_UP)))

你可能也喜欢numpy:

>>> import numpy as np
>>> np.ceil(2.3)
3.0

我并不是说numpy比数学更好,但如果您已经将numpy用于其他目的,则可以保持代码的一致性。

总之,这是我偶然发现的一个细节。我经常使用numpy,很惊讶没有人提到它,但当然,公认的答案是完全正确的。

如果你不想导入任何东西,你可以编写自己的简单函数:

def RoundUP(num):
    if num== int(num):
        return num
    return int(num + 1)

我知道这个答案是以前的一个问题,但如果你不想输入数学,你只想四舍五入,这对我来说很有用。

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

第一部分变成4,如果有余数,第二部分计算为“True”,加上True = 1;False = 0。如果没有余数,它还是原来的整数,但如果有余数,它就加1。