没有 Math 模块的 Python 3 中的 Ceil 和 floor 等效?

新手上路,请多包涵

我需要在不使用 import math 的情况下获得 ceil 和 floor 32 结果 (1.5)。

math.floor(3/2) => 3//2 math.ceil(3/2) =>?

好的,问题来了:将所有数字 15 + 45 + 15 + 45 + 15 … 与 N 项相加。

sum = (n//2) * 5 + int(n/2) * 15

原文由 zooks 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 493
2 个回答
>>> 3/2
1.5
>>> 3//2 # floor
1
>>> -(-3//2) # ceil
2

原文由 bakar 发布,翻译遵循 CC BY-SA 4.0 许可协议

尝试

def ceil(n):
    return int(-1 * n // 1 * -1)

def floor(n):
    return int(n // 1)

我使用 int() 使值成为整数。由于 ceiling 和 floor 是一种舍入类型,我认为整数是适合返回的类型。

整数除法//,转到数字行左侧的下一个整数。因此,通过使用 -1,我切换方向以获得上限,然后使用另一个 * -1 返回到原始符号。数学是从左到右完成的。

原文由 James Barton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题