如何在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
当前回答
我知道这个答案是以前的一个问题,但如果你不想输入数学,你只想四舍五入,这对我来说很有用。
>>> int(21 / 5)
4
>>> int(21 / 5) + (21 % 5 > 0)
5
第一部分变成4,如果有余数,第二部分计算为“True”,加上True = 1;False = 0。如果没有余数,它还是原来的整数,但如果有余数,它就加1。
其他回答
我认为你混淆了int()和round()之间的工作机制。
如果给定的是浮点数,Int()总是截断小数;而round(),在2.5的情况下,2和3都在距离2.5相等的距离内,Python返回距离0点更远的值。
round(2.5) = 3
int(2.5) = 2
有趣的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
我知道这是很久以前的事了,但我找到了一个非常有趣的答案,所以是这样的:
-round(-x-0.5)
这修复了边缘情况,适用于正数和负数,并且不需要任何函数导入
干杯
没有导入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)
四舍五入的值应该是浮动的
a = 8
b = 21
print math.ceil(a / b)
>>> 0
but
print math.ceil(float(a) / b)
>>> 1.0