我感到困惑以下整數運算在Python:整數除法在Python
-7/3 = -3
因爲(-3)*3 = -9 < -7
。我明白。
7/-3 = -3
我不明白這是如何定義的。 (-3)*(-3) = 9 > 7
。在我看來,它應該是-2,因爲(-3)*(-2) = 6 < 7
。
這是如何工作的?
我感到困惑以下整數運算在Python:整數除法在Python
-7/3 = -3
因爲(-3)*3 = -9 < -7
。我明白。
7/-3 = -3
我不明白這是如何定義的。 (-3)*(-3) = 9 > 7
。在我看來,它應該是-2,因爲(-3)*(-2) = 6 < 7
。
這是如何工作的?
對於(普通或長)整數除法,其結果是一個整數。 結果總是舍入負無窮:1/2是0,(-1)/ 2是-1,1 /( - 2)是-1,(-1)/( - 2)是0。
對-inf
的舍入解釋了您所看到的行爲。
哎呀,錯過了。雖然我不喜歡它,但我現在看到它是如何工作的。 – Jonathan
這是它如何工作的:
int(x)/int(y) == math.floor(float(x)/float(y))
Python的幾輪下來。 7/3 = 2(2 + 1/3) -7/3 = -3(-2 + 1/3)
擴展了aix和robert的答案。
想到這一點的最好辦法是在向下取整(向負無窮大)浮點結果方面:
-7/3 = floor(-2.33) = -3
7/-3 = floor(-2.33) = -3
用於/浮點除法 //用於整數除法(返回整數)
而python將結果向下舍入
Python一般遵循最少的原則。它只是總是舍入整數除法。 – Chriszuma
這裏是直接從bdfl自己的基本原理:http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html –
對於來這裏進行整數除法幫助的人:In Python 3,整數除法使用''//完成,例如'-7 // 3 = -3'但是-7/3 = -2.33..'。 – poke