如何在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
当前回答
如果处理整数,一种四舍五入的方法是利用//四舍五入的事实:只对负数进行除法,然后对结果求负数。不需要导入、浮点数或条件。
rounded_up = -(-numerator // denominator)
例如:
>>> print(-(-101 // 5))
21
其他回答
没有导入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)
我很惊讶我还没有看到这个答案(x + 0.4999),所以我要把它写下来。注意,这适用于任何Python版本。对Python舍入方案的更改使事情变得困难。请看这篇文章。
无需导入,我使用:
def roundUp(num):
return round(num + 0.49)
testCases = list(x*0.1 for x in range(0, 50))
print(testCases)
for test in testCases:
print("{:5.2f} -> {:5.2f}".format(test, roundUp(test)))
为什么会这样
来自文档
对于支持round()的内置类型,值四舍五入为10的- n次方的最接近倍数;如果两个倍数相等,则舍入到偶数
因此,2.5四舍五入为2,3.5四舍五入为4。如果不是这样的话,那么四舍五入可以通过加0.5来完成,但我们要避免达到中间点。所以,如果你加上0.4999,你会很接近,但有足够的余量来四舍五入到你通常期望的值。当然,如果x + 0.4999等于[n],这将失败。5000,但这不太可能。
我认为你混淆了int()和round()之间的工作机制。
如果给定的是浮点数,Int()总是截断小数;而round(),在2.5的情况下,2和3都在距离2.5相等的距离内,Python返回距离0点更远的值。
round(2.5) = 3
int(2.5) = 2
如果处理整数,一种四舍五入的方法是利用//四舍五入的事实:只对负数进行除法,然后对结果求负数。不需要导入、浮点数或条件。
rounded_up = -(-numerator // denominator)
例如:
>>> print(-(-101 // 5))
21
试试这个:
a = 211.0
print(int(a) + ((int(a) - a) != 0))