截断Python 3.2中的分区

时间:2011-03-29 08:23:42

标签: python division

  1. 在Python 3.2中,整数层除//比浮点除/更快吗?如果我知道我将仅使用整数,我应该支持//而不是默认为/吗?

  2. 如何在Python 3.2中获得整数截断行为?

    1/2 = 0

    -1/2 = 0

  3. 感谢。

1 个答案:

答案 0 :(得分:2)

from math import (floor, ceil)
def trunc_div(a, b):
    c = a / b
    return floor(c) if c > 0 else ceil(c)

测试它以确保它是正确的。现在已经很晚了,我在困倦的时候做数学。

实际上,不要这样做。虽然看看我是否可以将int子类化为截断的除法(不要这样做(也是,它不起作用)),我发现int()本身将截断实数,导致这样:

def trunc_div(a, b):
    return int(a / b)

这是一个相当愚蠢的包装。

所以,只需使用浮点除法,并用int()

截断它
>>> int(1 / 2)
0
>>> int(-1 / 2)
0

这使你非常接近你想要的中缀符号。

这个故事的寓意是......不要让你的朋友在昏昏欲睡时编码。