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

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

round(2.3) = 2.0 

而不是我想要的3。

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

int(2.3 + .5) = 2

当前回答

没有导入math //使用基本环境:

A)方法/类方法

def ceil(fl): 
  return int(fl) + (1 if fl-int(fl) else 0)

def ceil(self, fl): 
  return int(fl) + (1 if fl-int(fl) else 0)

b)λ:

ceil = lambda fl:int(fl)+(1 if fl-int(fl) else 0)

其他回答

我的分享

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

现在来总结一下:

101 * 19% = 19.19

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

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

X * -1 // 1 * -1

令人困惑,但它是有效的:当x=7.1时,你得到8.0。当x = -1.1时,得到-1.0

不需要导入模块。

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

round(integer) + 1

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

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

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

你可能也喜欢numpy:

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

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

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