如何在Python中四舍五入一个数字向上?

我试过四舍五入,但它把数字四舍五入了。例子:

round(2.3) = 2.0 

而不是我想要的3。

我尝试了int(number + .5),但它再次四舍五入!例子:

int(2.3 + .5) = 2

当前回答

我很惊讶我还没有看到这个答案(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,但这不太可能。

其他回答

当你在python中操作4500/1000时,结果将是4,因为默认的python将结果假设为整数,逻辑上: 4500/1000 = 4.5——> int(4.5) = 4 4的上限值显然是4

使用4500/1000.0,结果将是4.5,cil为4.5—> 5

使用javascript你会收到4.5作为4500/1000的结果,因为javascript只假设结果为“数字类型”,并直接返回结果为浮点数

祝你好运! !

毫无意义地做:

>>> round_up = lambda num: int(num + 1) if int(num) != num else int(num)
>>> round_up(2.0)
2
>>> round_up(2.1)
3

如果处理整数,一种四舍五入的方法是利用//四舍五入的事实:只对负数进行除法,然后对结果求负数。不需要导入、浮点数或条件。

rounded_up = -(-numerator // denominator)

例如:

>>> print(-(-101 // 5))
21

X * -1 // 1 * -1

令人困惑,但它是有效的:当x=7.1时,你得到8.0。当x = -1.1时,得到-1.0

不需要导入模块。

您可以使用楼层划分并添加1。 2.3 // 2 + 1