2

我正在开发一个没有math可用模块的系统。安装的所有“数学”函数(math.ceil(),math.round()等都会产生错误)。

我什至尝试过使用import mathwhich 产量:

<type 'ImportError'>
__import__ not found

当前困扰我的问题:如何在没有 的情况下将数学计算四舍五入为整数math.ceil

4

5 回答 5

10

如果x是要向上舍入为整数的浮点数,并且需要整数类型结果,则可以使用

rounded_up_x = int(-(-x // 1))

这是有效的,因为整数除以一向下舍入,但在进行除法之前和之后使用负号会舍入相反的方向。这里int将浮点结果转换为整数。int如果您想要一个等于整数的浮点值,请删除它,这是某些编程语言所做的。

向@D.LaRocque 致敬,指出 Python 的ceil()函数返回整数类型。

于 2019-07-19T15:56:27.367 回答
1

这是一种方法。我认为这应该适用于大多数版本的python。

def ceil(n):
    q, r = divmod(n, 1)
    return int(q) + bool(r)
于 2019-07-19T16:22:42.687 回答
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]
于 2019-07-19T16:07:39.720 回答
-1

它可以通过以下代码简单地完成(这是我一直做的)。不需要数学库

y = x if x==x//1 else round(x+0.5)

于 2019-07-19T16:13:11.070 回答
-4

欢迎来到堆栈。

就我在我的代码中实现的而言,您不需要import math使用round().

因为,round()是 python 中的一个独立函数,而不是 math 包的扩展。

所以,我建议你继续使用round(),而不是,math.round()你会没事的。

请参阅此文档以了解有关如何使用round()函数的更多信息。

于 2019-07-19T16:05:03.103 回答