我正在一个没有math
模块可用的系统上工作。安装的所有“数学”功能(math.ceil()
,math.round()
等都会产生错误)。
我什至尝试使用import math
产生以下结果:
<type 'ImportError'>
__import__ not found
困扰我的当前问题是:如何在没有math.ceil
的情况下将数学计算取整为整数?
答案 0 :(得分:1)
如果x
是一个要舍入为整数的浮点数,并且想要一个整数类型的结果,则可以使用
rounded_up_x = int(-(-x // 1))
之所以起作用,是因为整数除以1会四舍五入,但是在进行除法之前和之后使用负号会舍入相反的方向。这里的int
将浮点结果转换为整数。如果您想要一个等于整数的浮点值,请删除该int
,这是某些编程语言所要做的。
@ D.LaRocque的提示,指出Python的ceil()
函数返回整数类型。
答案 1 :(得分:1)
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]
答案 2 :(得分:1)
这是一种方法。我认为这应该适用于大多数python版本。
def ceil(n):
q, r = divmod(n, 1)
return int(q) + bool(r)
答案 3 :(得分:-1)
这可以通过以下代码简单地完成(这就是我总是这样做的方式)。无需数学库
y = x如果x == x // 1否则取整(x + 0.5)
答案 4 :(得分:-4)
欢迎使用堆栈。
就我在代码中实现的而言,您无需import math
即可使用round()
。
因为round()
是python中的独立函数,而不是数学包的扩展。
所以,我建议您继续使用round()
而不是math.round()
,这样就可以了。
请参阅此doc,以了解有关如何使用round()
函数的更多信息。