Python 3.2 中整数除法//比浮点除法更快吗?/如果我知道我将只使用整数,我应该赞成//而不是默认吗/?
如何在 Python 3.2 中获得整数截断行为?
1/2 = 0
-1/2 = 0
谢谢。
from math import (floor, ceil)
def trunc_div(a, b):
c = a / b
return floor(c) if c > 0 else ceil(c)
Run Code Online (Sandbox Code Playgroud)
测试一下以确保它是正确的。已经很晚了,我正在睡觉时做数学。
事实上,不要这样做。在查看是否可以对 int 进行子类化以进行截断除法(也不要这样做(而且它不起作用))时,我突然想到它int()本身会截断实数,从而导致:
def trunc_div(a, b):
return int(a / b)
Run Code Online (Sandbox Code Playgroud)
这是一个相当愚蠢的包装。
因此,只需使用浮点除法,并用以下方法截断它int():
>>> int(1 / 2)
0
>>> int(-1 / 2)
0
Run Code Online (Sandbox Code Playgroud)
这使您非常接近您想要的中缀表示法。
这个故事的寓意是……不要让你的朋友在昏昏欲睡时编码。