[英]Floor division with negative number
表達式6 // 4
產生1
,其中地板除法在除以數字后產生整數。
但是對於負數,為什么-6 // 4
返回-2
?
//
運算符顯式地對結果進行分層。 引用二進制算術運算文檔:
結果是將“floor”函數應用於結果的數學除法。
flooring 與四舍五入為 0 不同; flooring 總是移動到較低的整數值。 查看math.floor()
函數:
返回x的下限,小於或等於x的最大整數。
對於-6 // 4
,首先計算-6 / 4
的結果,因此-1.5
。 Flooring 然后移動到較低的整數值,所以-2
。
如果您想向零舍入,則必須明確這樣做; 你可以在真正的除法上用int()
函數做到這一點:
>>> int(-6 / 4)
-1
int()
刪除小數部分,因此總是向零舍入。
樓層划分也將向下舍入到下一個最低數字,而不是下一個最低絕對值。
6 // 4 = 1.5
,向下舍入為 1,向上舍入為 2。
-6 // 4 = -1.5
,向下-6 // 4 = -1.5
到 -2,向上舍入到 -1。
//
在 Python 中是一個“地板除法”運算符。 這意味着這種除法的結果是常規除法結果的下限(使用 / 運算符執行)。
給定數的下限是小於這個數的最大整數。 例如
7 / 2 = 3.5 so 7 // 2 = floor of 3.5 = 3.
對於負數,它不太直觀: -7 / 2 = -3.5,
所以-7 // 2 = floor of -3.5 = -4
。 同樣-1 // 10 = floor of -0.1 = -1.
//
被定義為做與math.floor()
相同的事情:返回小於或等於浮點結果的最大整數值。 Zero is not less than or equal to -0.1.
理解為什么地板除法 // 產生負值結果的一種有用方法是將其視為對模或余數 % 運算符的補充。
5/3 is equivalent to 1 remainder 2
IE
5//3 = 1
5%3 = 2
但
-5/3 = -2
-5%3 = 1
或者
-2 + 1/3rd which is -1.6667 (ish)
這看起來很奇怪,但它確保了諸如-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,3
等生成序列時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.