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

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

round(2.3) = 2.0 

而不是我想要的3。

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

int(2.3 + .5) = 2

当前回答

当你在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只假设结果为“数字类型”,并直接返回结果为浮点数

祝你好运! !

其他回答

当你在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只假设结果为“数字类型”,并直接返回结果为浮点数

祝你好运! !

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

对于那些不想使用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:我详细解释了这一点,因为上面的一些评论要求这样做,我仍然是新手,所以我不能评论。

对于那些想四舍五入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必须为非负整数

的数学。函数返回大于或等于x的最小整数。

对于Python 3:

import math
print(math.ceil(4.2))

对于Python 2:

import math
print(int(math.ceil(4.2)))