在Python 3.2中,整数层除//
比浮点除/
更快吗?如果我知道我将仅使用整数,我应该支持//
而不是默认为/
吗?
如何在Python 3.2中获得整数截断行为?
1/2 = 0
-1/2 = 0
感谢。
答案 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
这使你非常接近你想要的中缀符号。
这个故事的寓意是......不要让你的朋友在昏昏欲睡时编码。