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