簡體   English   中英

帶負數的樓層划分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM