如何在Python中四舍五入一个数字向上?
我试过四舍五入,但它把数字四舍五入了。例子:
round(2.3) = 2.0
而不是我想要的3。
我尝试了int(number + .5),但它再次四舍五入!例子:
int(2.3 + .5) = 2
如何在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)
其他回答
你可能也喜欢numpy:
>>> import numpy as np
>>> np.ceil(2.3)
3.0
我并不是说numpy比数学更好,但如果您已经将numpy用于其他目的,则可以保持代码的一致性。
总之,这是我偶然发现的一个细节。我经常使用numpy,很惊讶没有人提到它,但当然,公认的答案是完全正确的。
的数学。函数返回大于或等于x的最小整数。
对于Python 3:
import math
print(math.ceil(4.2))
对于Python 2:
import math
print(int(math.ceil(4.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。
使用数学。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)
如果你不想导入任何东西,你可以编写自己的简单函数:
def RoundUP(num):
if num== int(num):
return num
return int(num + 1)