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

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

round(2.3) = 2.0 

而不是我想要的3。

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

int(2.3 + .5) = 2

当前回答

>>> def roundup(number):
...     return round(number+.5)
>>> roundup(2.3)
3
>>> roundup(19.00000000001)
20

该函数不需要模块。

其他回答

你可能也喜欢numpy:

>>> import numpy as np
>>> np.ceil(2.3)
3.0

我并不是说numpy比数学更好,但如果您已经将numpy用于其他目的,则可以保持代码的一致性。

总之,这是我偶然发现的一个细节。我经常使用numpy,很惊讶没有人提到它,但当然,公认的答案是完全正确的。

我知道这个答案是以前的一个问题,但如果你不想输入数学,你只想四舍五入,这对我来说很有用。

>>> int(21 / 5)
4
>>> int(21 / 5) + (21 % 5 > 0)
5

第一部分变成4,如果有余数,第二部分计算为“True”,加上True = 1;False = 0。如果没有余数,它还是原来的整数,但如果有余数,它就加1。

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

祝你好运! !

我很惊讶居然没有人建议

(numerator + denominator - 1) // denominator

整数除法的四舍五入。曾经是C/ c++ /CUDA (cf. divup)的常用方式

没有导入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)