Python 3.2中的截断除法
在Python 3.2中,整数地板除法是否比浮点除法快?如果我知道我将只处理整数,我应该选择Python 3.2中的截断除法,python,division,Python,Division,在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) 测试它以确保它是正确的。很晚了,我困的时候在做数学 事实上,不要那样做。在查看是否可以
/
而不是默认使用/
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)
测试它以确保它是正确的。很晚了,我困的时候在做数学
事实上,不要那样做。在查看是否可以将int子类化以执行截断除法(也不要这样做(同样,它也不起作用))时,我突然想到int()
本身将截断实数,结果是:
def trunc_div(a, b):
return int(a / b)
这是一个相当愚蠢的包装
因此,只需使用浮点除法,并使用int()截断它即可:
这使您非常接近所需的中缀符号
这个故事的寓意是。。。不要让你的朋友在昏昏欲睡时编码。关于问题1。-真的不难用。谢谢,我刚开始用Python,不知道有这样的函数。似乎/比/快了一点点。对于第一个问题,请参阅问题的第一个启发性答案,了解为什么这不太重要。具体来说:本机加法和减法操作码的速度是无关的。它位于噪声层,与字节码评估相比完全相形见绌。这是指一个或两个大约数千条的本机指令。
谢谢,我知道这样做会奏效,只是想知道Python中是否有这样的本机语言功能,以便我可以使用中缀运算符而不是函数。
>>> int(1 / 2)
0
>>> int(-1 / 2)
0