python除法函数一般如何命名_关于python:当用于除法时,’/’和’//’之间有什么区别?...
使用一個對另一個有好處嗎?在Python2中,它們似乎都返回相同的結果:
>>> 6/3
2
>>> 6//3
2
請參考整數除法的問題,因為引入了//運算符進行整數除法。
在python 3.0中,5 / 2將返回2.5,5 // 2將返回2。前者是浮點除法,后者是樓層除法,有時也稱為整數除法。
在2.x行中的python 2.2或更高版本中,整數沒有區別,除非執行from __future__ import division,這會導致python 2.x采用3.0的行為。
無論未來進口情況如何,5.0 // 2都將返回2.0,因為這是操作的樓層劃分結果。
您可以在https://docs.python.org/whatsnew/2.2.html pep-238-changing-the-division-operator上找到詳細的描述。
編輯:可以"修復"python 2.2以來的分割!(剛剛閱讀鏈接的政治公眾人物)
也包括python -Qnew。其他分區選項:-Qold(默認)、-Qwarn、-Qwarnall。
值得指出的是,5.0 / 2在所有版本中都返回2.5,5 / 2.0也返回2.5。只有當兩個操作數都是int時,舊的行為才不同。
如果數字是負數呢?負整數的行為相同嗎?
@Aaronfranke,我用負數嘗試了//(樓層劃分)。這是結果。我定義了變量a=-50&b=-5,當我使用print(a//b)時,得到正值輸出(10)。當我將var a或b更改為正值時,則輸出為負值。我使用的是python 2.7.12版本。
@斯里尼瓦蘇,你的例子沒有幫助。最好是5/2(產生2)和-5/2(產生-3)。
在python 2.7.15中,//行為與python 3相同
這有助于澄清python 2.x行中,/既不是樓層劃分,也不是真正的劃分。目前接受的答案不清楚。當兩個參數都為int時,/是樓層劃分,但當其中一個或兩個參數都為float時,則是真正的劃分。
上面講的是更多的事實,比公認答案中的第二段更清楚。
//實現"樓層劃分",無論您的類型如何。所以1.0/2.0給0.5,但1/2、1//2和1.0//2.0都給0。
詳見https://docs.python.org/whatsnew/2.2.html pep-238-changing-the-division-operator
這是一個很好的答案。PEP鏈接很有用。另外,如果您不確定一元運算符發生了什么,可以考慮使用math.floor()或math.fmod()。
/->浮點除法
//->樓層劃分
讓我們在python 2.7和python 3.5中都看到一些例子。
python 2.7.10與python 3.5
print (2/3) ?----> 0 ? ? ? ? ? ? ? ? ? Python 2.7
print (2/3) ?----> 0.6666666666666666 ?Python 3.5
。
python 2.7.10與python 3.5
print (4/2) ?----> 2 ? ? ? ? Python 2.7
print (4/2) ?----> 2.0 ? ? ? Python 3.5
現在,如果希望(在python 2.7中)與python 3.5中的輸出相同,可以執行以下操作:
Python2.7.10
from __future__ import division
print (2/3) ?----> 0.6666666666666666 ? #Python 2.7
print (4/2) ?----> 2.0 ? ? ? ? ? ? ? ? ?#Python 2.7
。
其中,python 2.7和python 3.5中的樓層劃分沒有區別
138.93//3 ---> 46.0 ? ? ? ?#Python 2.7
138.93//3 ---> 46.0 ? ? ? ?#Python 3.5
4//3 ? ? ?---> 1 ? ? ? ? ? #Python 2.7
4//3 ? ? ?---> 1 ? ? ? ? ? #Python 3.5
。
這與int(5/2)相同嗎?
如果數字是負數呢?負整數的行為相同嗎?
正如大家已經回答過的那樣,//是樓層劃分。
這一點之所以重要,是因為在2.2版本(包括python 3.x版本)的所有python版本中,//都是明確的樓層劃分。
/的行為可以根據以下情況而改變:
是否導入激活的__future__(模塊本地)
python命令行選項,可以是-Q old或-Q new。
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
號
還沒有意識到樓層劃分也適用于非整數。謝謝!
python 2.7和其他即將發布的python版本:
分部(/)
將左手操作數除以右手操作數
示例:4 / 2 = 2。
樓層劃分(//)
運算數的除法,其結果是除掉小數點后位數的商。但是,如果其中一個操作數是負數,則結果是向下的,即從零取整(向負無窮大取整):
示例:9//2 = 4和9.0//2.0 = 4.0、-11//3 = -4和-11.0//3 = -4.0。
/部門和//樓層部門的運營商都以類似的方式運營。
朝向無窮遠和遠離零是不同的東西。例如(-1.2和3.4):"地板"朝向負無窮(-2和3),"截斷"朝向零(-1和3),"飽和"朝向零(-2和4),"天花板"朝向正無窮(-1和4)。
雙斜線//是樓層劃分:
>>> 7//3
2
方程的答案被四舍五入到下一個較小的整數或以0為小數點的浮點。
>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0
//是樓層劃分,它總是給出結果的整數樓層。另一個是"常規"部門。
在這個答案中,我不僅要告訴你答案,而且要告訴你//的好處。
大多數使用python的人必須知道python中的floor division操作符(//)。對于不知道的人,此運算符在除法后返回下限值。例如:5/2=2.5,但5//2=2(2是2.5的下限值)
但是對于大于10^17的數字,除法運算符的行為通常不正常。
x = 10000000000000000000006
if x / 2 == x // 2:
print("Hello")
else:
print("World")
對于上面的代碼,世界將被打印,而不是你好。這是因為1000000000000000006/2將返回5e+21,但100000000000000000000006//2將返回正確的答案5000000000000000000003。即使是int(100000000000000000006/2),也會返回500000000000000000000,這是不正確的。
因此,即使要分割大數字,也要使用//運算符。
例如:如果要查找第一個10000000000000000000000000000010002數字的和,公式為:n(n+1)/2,則普通除法運算符(/)會給出錯誤的答案,但//運算符會給出正確的答案。
以下是'/'和'/'之間的區別;我已經在python 3.7.2中運行了這些算術運算。
>>> print 11 / 3
3.6666666666666665
>>> print 11 // 3
3
>>> print 11.3 / 3
3.7666666666666667
>>> print 11.3 // 3
3.0
這個答案是如何加上其他想法沒有涵蓋的內容的?或者這個答案怎么比其他答案更好?
下面是程序的輸出。這解釋不了什么。
以上答案都很好。我想再加一點。在某些值中,這兩個值的商相同。在此之后,樓層劃分操作員(//工作正常,而不是劃分操作員(/工作)。
- > int(755349677599789174/2)
- > 377674838799894592 ? ? ?#wrong answer
- > 755349677599789174 //2
- > 377674838799894587 ? ? ?#correct answer
。
5.0//2導致2.0,而不是2,因為//運算符返回值的返回類型遵循python強制(類型轉換)規則。
python將較低的數據類型(integer)轉換為較高的數據類型(float),以避免數據丟失。
總結
以上是生活随笔為你收集整理的python除法函数一般如何命名_关于python:当用于除法时,’/’和’//’之间有什么区别?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑主题win7美女主题(win7的主题
- 下一篇: vs里面快捷键注释(vs的注释快捷键)