在不使用if-else的情况下实现ceil功能

时间:2013-06-17 04:16:23

标签: python algorithm ceil

我只是想知道有没有一种方法可以在不使用if-else的情况下实现ceil功能? 使用if-else (for a/b),它可以实现为:

if a%b == 0:
    return(a/b)
else:
    return(a//b + 1)

3 个答案:

答案 0 :(得分:7)

最简单的是。

a//b + bool(a%b)

为了安全起见,

b and (a//b + bool(a%b))

干杯。

答案 1 :(得分:3)

如果它们是整数,那么这应该有效(我猜你有一个有理数表示):

a/b + (a%b!=0)

否则,请将a/b替换为int(a/b),或者更好地将其替换为a//b下面的建议。

答案 2 :(得分:0)

-(-a//b)

也许最简单?

======================

*根据@Gilles的评论进行编辑:

对于整数n,

floor(x)=n for x in [n, n+1)
ceil(y)=n+1 for y in (n, n+1]

所以floor(-y)=-n-1 for -y in [-n-1, -n)

ceil(y)=-floor(-y)=n+1 for y in (n, n+1]

在Python中,floor(a/b) = a//b。 因此ceil(a/b) = -(-a//b)