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

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

round(2.3) = 2.0 

而不是我想要的3。

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

int(2.3 + .5) = 2

当前回答

我基本上是Python的初学者,但如果你只是想四舍五入而不是向下,为什么不这样做:

round(integer) + 1

其他回答

试试这个:

a = 211.0
print(int(a) + ((int(a) - a) != 0))

有趣的Python 2。要记住的X问题:

>>> import math
>>> math.ceil(4500/1000)
4.0
>>> math.ceil(4500/1000.0)
5.0

问题是,在python中,两个整型数的除法会产生另一个整型数,并且在ceiling调用之前被截断。您必须将一个值设置为浮点(或强制转换)以获得正确的结果。

在javascript中,完全相同的代码产生不同的结果:

console.log(Math.ceil(4500/1000));
5

我认为你混淆了int()和round()之间的工作机制。

如果给定的是浮点数,Int()总是截断小数;而round(),在2.5的情况下,2和3都在距离2.5相等的距离内,Python返回距离0点更远的值。

round(2.5) = 3
int(2.5) = 2

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

对于Python 3:

import math
print(math.ceil(4.2))

对于Python 2:

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

对于那些想四舍五入a / b并得到整数的人:

使用整数除法的另一种变体是

def int_ceil(a, b):
    return (a - 1) // b + 1

>>> int_ceil(19, 5)
4
>>> int_ceil(20, 5)
4
>>> int_ceil(21, 5)
5

注:a、b必须为非负整数