我意外地偶然發現了python中的一個奇怪行爲。 在repl中鍵入這個和平代碼。當操作數爲負數時,Python分割操作符表現奇怪
In [29]: 7 /-3
Out[29]: -3
無法找到任何合理的解釋爲這個結果。 這裏發生了什麼?
我意外地偶然發現了python中的一個奇怪行爲。 在repl中鍵入這個和平代碼。當操作數爲負數時,Python分割操作符表現奇怪
In [29]: 7 /-3
Out[29]: -3
無法找到任何合理的解釋爲這個結果。 這裏發生了什麼?
Python整數除法結果截斷被舍入到負無窮大。
對於原因:http://python-history.blogspot.com.au/2010/08/why-pythons-integer-division-floors.html
在做整數除法蟒蛇四捨五入到下一個較低的整數(樓)。 這就是爲什麼如果你計算7/3
python會告訴你它是2
。 當您輸入7/-3
時,它不會成爲-2
,因爲那不是發言權。 -3
是下一個較低的整數。
執行整數除法時,數字被四捨五入爲整數(floor(x)
返回N中的最大值n
,例如n <= x
)。這意味着對於負數,舍入數值將具有更高的絕對值(因此7/3 == floor(7//-3) == floor(-2.333)
返回-3
)。
值得一提的是,在python 3中'/'運算符將返回float,並且// //將進行floor整數除法。所以在python 3中:'7/-3'爲'-2.3333333333333335','7 // -3'爲'-3' – stalk
雖然很奇怪「 - 」被當作第一位的標誌。 – zoombya
@zoombya你是什麼意思,一元減號? – jamylak