如何在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
当前回答
我基本上是Python的初学者,但如果你只是想四舍五入而不是向下,为什么不这样做:
round(integer) + 1
其他回答
你可以这样使用round:
cost_per_person = round(150 / 2, 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
我基本上是Python的初学者,但如果你只是想四舍五入而不是向下,为什么不这样做:
round(integer) + 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)
我很惊讶我还没有看到这个答案(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,但这不太可能。