如您所知,如果您这样做:
>>> 11/2
# 5
和
>>> 11/2.0
# 5.5
我想在这种情况下获得6分。我尝试过:
>>> 11//2
# 5
和
>>> 11//2.0
# 5.0
最后一个给出了prev整数。我想得到下一个整数。
结果就像x.1
我想得到(x+1)
。
我该怎么做?
答案 0 :(得分:3)
>>> import math
>>> math.ceil(11/2.0)
6.0
>>>
答案 1 :(得分:2)
通常比模数和除法工作更有效率,转换地板划分很容易:
x // y
进入ceil
分区(与使用math.ceil
不同,由于大值的浮点不精确,它不会产生错误结果的风险):
(x + y - 1) // y
如果x
完全可以被y
整除,则添加y - 1
不会改变任何内容;场地划分使最终结果不变。如果它不能被完全整除,那么它会将其增加到下一个倍数以上,只需要一个除法运算而不是两个(划分很昂贵;执行两次是非常昂贵的),并且没有浮点精度问题。
答案 2 :(得分:0)
rounded_up = x // y + bool(x % y)
如果除法产生非零余数,我们加1。这样做的好处是不会引入浮点不精确,因此在math.ceil
产生错误答案的极端情况下它是正确的。