我正在开发一个没有math
可用模块的系统。安装的所有“数学”函数(math.ceil()
,math.round()
等都会产生错误)。
我什至尝试过使用import math
which 产量:
<type 'ImportError'>
__import__ not found
当前困扰我的问题:如何在没有 的情况下将数学计算四舍五入为整数math.ceil
?
我正在开发一个没有math
可用模块的系统。安装的所有“数学”函数(math.ceil()
,math.round()
等都会产生错误)。
我什至尝试过使用import math
which 产量:
<type 'ImportError'>
__import__ not found
当前困扰我的问题:如何在没有 的情况下将数学计算四舍五入为整数math.ceil
?
如果x
是要向上舍入为整数的浮点数,并且需要整数类型结果,则可以使用
rounded_up_x = int(-(-x // 1))
这是有效的,因为整数除以一向下舍入,但在进行除法之前和之后使用负号会舍入相反的方向。这里int
将浮点结果转换为整数。int
如果您想要一个等于整数的浮点值,请删除它,这是某些编程语言所做的。
向@D.LaRocque 致敬,指出 Python 的ceil()
函数返回整数类型。
这是一种方法。我认为这应该适用于大多数版本的python。
def ceil(n):
q, r = divmod(n, 1)
return int(q) + bool(r)
的上限x
是大于或等于 的最小整数x
。因此,如果 的小数部分x
非零,只需加 1。
一种简单的方法是:
def myCeil(x):
return int(x) + int((x>0) and (x - int(x)) > 0)
例子:
print([myCeil(i) for i in [myCeil(i) for i in [-2, -1.1, -0.0, 0, 1, 1.2, 3]])
#[-2, -1, 0, 0, 1, 2, 3]
它可以通过以下代码简单地完成(这是我一直做的)。不需要数学库
y = x if x==x//1 else round(x+0.5)
欢迎来到堆栈。
就我在我的代码中实现的而言,您不需要import math
使用round()
.
因为,round()
是 python 中的一个独立函数,而不是 math 包的扩展。
所以,我建议你继续使用round()
,而不是,math.round()
你会没事的。
请参阅此文档以了解有关如何使用round()
函数的更多信息。