是整數除法地板比
//
浮師/
在Python 3.2快?如果我知道我將要與整數唯一的工作,我應該有利於//
,而不是默認爲/
的?截斷師在Python 3.2我如何在Python 3.2整數截斷行爲?
1/2 = 0
-1/2 = 0
感謝。
是整數除法地板比//
浮師/
在Python 3.2快?如果我知道我將要與整數唯一的工作,我應該有利於//
,而不是默認爲/
的?截斷師在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)
測試,以確保它是正確的。現在已經很晚了,我在昏昏欲睡時做數學。
其實,不這樣做。雖然看,如果我能繼承INT做截斷除法(不這樣做,要麼(也沒用)),它發生,我認爲int()
本身會截斷實數,造成這樣的:
def trunc_div(a, b):
return int(a/b)
這是一個相當愚蠢的包裝。
所以,僅僅用浮法事業部,並與int()
截斷它:
>>> int(1/2)
0
>>> int(-1/2)
0
這讓你很接近你期望中綴符號。
這個故事的寓意是......不要讓昏昏欲睡,而您的朋友的代碼。
謝謝,我知道這樣的事情會工作,只是想知道在Python中是否有這樣的本地語言功能,所以我可以使用中綴運算符而不是函數。 – 2011-03-29 08:52:17
關於問題1 - ['timeit'](http://docs.python.org/py3k/library/timeit.html)確實不難使用。 – 2011-03-29 08:28:54
謝謝,我剛剛開始與Python,不知道有這樣的功能。看起來像/比小小的weeny比//快。 – 2011-03-29 08:42:18
對於第一個問題,請參閱[這](http://stackoverflow.com/questions/1396564/why-is-subtraction-faster-than-addition-in-python)的啓發性第一個答案,爲什麼這是不可能的很重要。具體來說:'原生加減操作碼的速度是無關緊要的。它處於噪聲層,與字節碼評估完全相形見絀。這是在談論一個或兩個本地指令數千個.' – 2011-03-29 08:54:04