如何在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
当前回答
对于那些想四舍五入a / b并得到整数的人:
使用整数除法的另一种变体是
def int_ceil(a, b):
return (a - 1) // b + 1
>>> int_ceil(19, 5)
4
>>> int_ceil(20, 5)
4
>>> int_ceil(21, 5)
5
注:a、b必须为非负整数
其他回答
你可以这样使用round:
cost_per_person = round(150 / 2, 2)
>>> def roundup(number):
... return round(number+.5)
>>> roundup(2.3)
3
>>> roundup(19.00000000001)
20
该函数不需要模块。
的数学。函数返回大于或等于x的最小整数。
对于Python 3:
import math
print(math.ceil(4.2))
对于Python 2:
import math
print(int(math.ceil(4.2)))
对于那些不想使用import的人。
对于给定的列表或任何数字:
x = [2, 2.1, 2.5, 3, 3.1, 3.5, 2.499,2.4999999999, 3.4999999,3.99999999999]
你必须首先计算这个数字是否等于它的整数,这个整数总是四舍五入。如果结果为True,则返回数字,如果不是,则返回整数(数字)+ 1。
w = lambda x: x if x == int(x) else int(x)+1
[w(i) for i in z]
>>> [2, 3, 3, 3, 4, 4, 3, 3, 4, 4]
数学逻辑:
如果数字有小数部分:round_up - round_down == 1,总是。 如果数字没有小数部分:round_up - round_down == 0。
So:
Round_up == x + round_down
:
如果number != round_down, X == 1 如果number == round_down, X == 0
你把数字分成两部分,整数和小数。如果小数不为0,加1。
PS:我详细解释了这一点,因为上面的一些评论要求这样做,我仍然是新手,所以我不能评论。
我很惊讶居然没有人建议
(numerator + denominator - 1) // denominator
整数除法的四舍五入。曾经是C/ c++ /CUDA (cf. divup)的常用方式