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

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

round(2.3) = 2.0 

而不是我想要的3。

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

int(2.3 + .5) = 2

当前回答

上面的答案是正确的,但是,仅仅为这个函数导入数学模块对我来说通常感觉有点过分。幸运的是,还有另一种方法:

g = 7/5
g = int(g) + (not g.is_integer())

在python中涉及数字的语句中,True和False被解释为1和0。g.s is_integer()基本上转换为g.s has_no_decimal()或g == int(g)。所以英语的最后一个表述是把g四舍五入,如果g有小数,就加1。

其他回答

四舍五入的值应该是浮动的

a = 8 
b = 21
print math.ceil(a / b)
>>> 0

but

print math.ceil(float(a) / b)
>>> 1.0

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

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

我的分享

我已经测试了print(-(-101 // 5)) = 21上面给出的例子。

现在来总结一下:

101 * 19% = 19.19

我不能用**,所以我把乘除展开:

(-(-101 //(1/0.19))) = 20

这里有一种使用模和bool的方法

n = 2.3
int(n) + bool(n%1)

输出:

3

使用数学。Ceil整理:

>>> import math
>>> math.ceil(5.4)
6.0

注意:输入应该是浮点数。

如果你需要一个整数,调用int来转换它:

>>> int(math.ceil(5.4))
6

顺便说一下,用数学。向下舍入和舍入到最接近的整数。

>>> math.floor(4.4), math.floor(4.5), math.floor(5.4), math.floor(5.5)
(4.0, 4.0, 5.0, 5.0)
>>> round(4.4), round(4.5), round(5.4), round(5.5)
(4.0, 5.0, 5.0, 6.0)
>>> math.ceil(4.4), math.ceil(4.5), math.ceil(5.4), math.ceil(5.5)
(5.0, 5.0, 6.0, 6.0)