我是編程和Python的初學者。我正在做一些簡單的數學運算。正如我們所知,Python解釋器中的3/2
給出了1
。但-3/2
給出-2
。你能指出這裏的區別嗎?3/2和-3/2有什麼區別?
回答
在Python 2,/
執行整數除法。這意味着如果結果不是整數,則結果爲將舍入爲下一個整數值。當該值爲負時,這自然會變成更大幅度的負數。
直觀上,整數除法的結果就是浮點除法的結果mathematical floor。爲此,整數除法通常也被稱爲floor division。
floor(1.5) # Returns 1.0
floor(-1.5) # Returns -2.0
有可能通過將from __future__ import division
在您的模塊的頂部,以改變在Python 2此行爲。此輸入將使/
運營商僅指示真正的劃分(浮點劃分),並使//
運營商能夠進行明確的地板劃分(整數劃分)。這些約定都是標準在Python 3
from __future__ import division
print(3/2) # 1.5
print(3//2) # 1
正如評論@Dunes筆記,這是值得注意的是,-
比/
一個更高的優先級,因此-3/2
相當於(-3)/2
而非-(3/2)
。如果首先應用該部門,結果確實是-1
。
我認爲四捨五入通常被稱爲「floor」+1,因爲它比我更好地解釋它 – 2014-11-04 17:06:46
值得注意的是'-'是一元運算符,與分割運算符綁定更緊密。如果是相反的話,結果將是相同的。 – Dunes 2014-11-04 17:10:16
在Python 3.4.2中,'int(-1.5)'返回'-1'。 – 2014-11-05 16:16:20
-3/2 == -1.5 , floor(-1.5) = -2
同樣
3/2 == 1.5 , floor(1.5) = 1
Python有兩個分部操作員。
/
//
這裏,//
將總是圓的結果爲最接近的整數(不論操作數的類型的)。這被稱爲地板分區。但/
將四捨五入到最接近的整數,如果兩個操作數都是整數,則表示其中的任何一個操作數都是浮點數,則進行實際除法。
的差異可以與本實施例中可以清楚地理解,
>>> 11/4
2
>>> 11.0/4
2.75
>>> 11//4
2
>>> 11.0//4.0
2.0
從Python Documentation on floor division引用,
數學除法該回合下來到最接近的整數。地板分區操作員是
//
。例如,表達式11 // 4
評估爲2
,與浮法真正劃分返回的結果相反。 請注意(-11) // 4
是-3
,因爲那是-2.75
向下舍入爲。見PEP 238。
引用文本的最後一行是您實際問題的答案。
地板劃分和舍入到最近的整數是兩個不等價的概念。在Python 3.4.2中,'5 // 3'將產生1,'round(5/3)'將產生2.'// //'運算符總是向負無窮大轉。 – 2014-11-05 16:20:08
- 1. [BITS 32]聲明和BITS 32之間有什麼區別?
- 2. keras.layer.Dense(32)和keras.layer.SimpleRNN(32)之間的區別?
- 3. 爲什麼32位和64位numpy/pandas之間有區別
- 4. .NET在32位或64位系統上有什麼區別?
- 5. 什麼是適合32位和64位「32位」的術語
- 6. 32位和64位的Java CRC32實現有何區別
- 7. 16位和32位應用程序的最終區別是什麼?
- 8. 編程微控制器8位,16位,32位時有什麼區別?
- 9. 爲什麼int 32位?
- 10. 爲什麼sizeof(string)== 32?
- 11. 有什麼區別`和$(Bash中有什麼區別?
- 12. ==和===有什麼區別?
- 13. ==和===有什麼區別?
- 14. 有什麼區別? :和||
- 15. ==和===有什麼區別?
- 16. '=='和'==='有什麼區別?
- 17. `&`和`ref`有什麼區別?
- 18. 有什麼區別:。!和:r!?
- 19. | 0和~~有什麼區別?
- 20. Appender和〜有什麼區別?
- 21. 32位和64位操作系統和處理器(Intel架構和Windows)之間有什麼區別
- 22. 具有32/16位分區的處理器上的64/32位分區
- 23. CreateRemoteThread 32-> 64和/或64-> 32
- 24. 32位和64位Excel 2007之間的區別
- 25. Qt moc.exe - 32位和64位版本的區別?
- 26. xtype和別名有什麼區別?
- 27. 64位文件系統與32位文件系統最大區別是什麼
- 28. 有什麼區別
- 29. 有什麼區別
- 30. 有什麼區別?
'3/2' - > 1.5,向下取整爲1.'-3/2' - > -1.5,向下取整至-2。 – 2014-11-04 17:04:35
另請參閱http://stackoverflow.com/a/19518866/190597,解釋爲什麼Python向負無窮髮展。 – unutbu 2014-11-04 17:07:39