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

时间:2015-09-14 06:56:09

标签: python python-3.x

我需要在不使用import math的情况下完成3/2结果(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

4 个答案:

答案 0 :(得分:3)

尝试

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

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

我使用int()将值设为整数。由于上限和下限是四舍五入的一种,我认为整数是返回的合适类型。

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

答案 1 :(得分:1)

尝试:

def ceil(n):
    res = int(n)
    return res if res == n or n < 0 else res+1

def floor(n):
    res = int(n)
    return res if res == n or n >= 0 else res-1

答案 2 :(得分:0)

尝试:

if a%b != 0:
  print(int(a//b + 1))
else:
  print(int(a/b))

答案 3 :(得分:0)

ma​​th.ceil() 等效

def ceil(n):
    return (n + 1) // 2