python中可以用如下方式表示正負(fù)無窮
>>>float('inf')#正無窮,inf不區(qū)分大小寫,float('InF')一樣可以。
inf
>>>float('-inf')#負(fù)無窮,不區(qū)分大小寫。
-inf
當(dāng)涉及>和<運(yùn)算時,所有數(shù)都比-inf大,所有數(shù)都比+inf小。
>>>float('nan')
nan
nan代表NotANumber(不是一個數(shù)),它并不等于0,因為nan不是一個數(shù),所以相關(guān)計算都無法得到數(shù)字。
正無窮float('inf')
>>>float('inf')+100
inf
>>>float('inf')-100
inf
>>>float('inf')*100
inf
>>>float('inf')/100
inf
>>>float('inf')+float('inf')
inf
>>>float('inf')-float('inf')
nan
>>>float('inf')*float('inf')
inf
>>>float('inf')/float('inf')
nan
>>>100+float('inf')
inf
>>>100-float('inf')
-inf
>>>100*float('inf')
inf
>>>100/float('inf')
0.0
負(fù)無窮float('inf')
>>>float('-inf')+100
-inf
>>>float('-inf')-100
-inf
>>>float('-inf')*100
-inf
>>>float('-inf')/100
-inf
>>>float('-inf')+float('-inf')
-inf
>>>float('-inf')-float('-inf')
nan
>>>float('-inf')*float('-inf')
inf
>>>float('-inf')/float('-inf')
nan
>>>100+float('-inf')
-inf
>>>100-float('-inf')
inf
>>>100*float('-inf')
-inf
>>>100/float('-inf')
-0.0
可見,正無窮float('inf')與負(fù)無窮float('inf')運(yùn)算有著異曲同工之妙。
正無窮float('inf')與負(fù)無窮float('inf')之間的運(yùn)算:
>>>float('inf')+float('-inf')
nan
>>>float('inf')-float('-inf')
inf
>>>float('-inf')-float('inf')
-inf
>>>float('inf')*float('-inf')
-inf
>>>float('inf')/float('-inf')
nan
>>>float('-inf')/float('inf')
nan
NaN
所有涉及nan的操作,返回的都是nan。
>>>float('nan')+100
nan
>>>float('nan')-100
nan
>>>float('nan')*100
nan
>>>float('nan')/100
nan
比較操作時,返回的都是False,哪怕兩個float('nan')互相比較都不相等。
>>>float('nan')>float('inf')
False
>>>float('nan')>float('-inf')
False
>>>float('nan') False >>>float('nan') False >>>float('nan')==float('nan')#注意 False Python中可以用math.isinf()與math.isnan()來判斷數(shù)據(jù)是否為inf或nan。 >>>importmath >>>math.isinf(float('inf')) True >>>math.isinf(float('-inf')) True >>>math.isnan(float('nan')) True 除此之外,還有別的方法可以用來判斷數(shù)據(jù)是否為inf和nan,但上述方法是最推薦的,所以其他方法不再贅述。 正負(fù)無窮與NaN的is和==判斷 >>>inf=float("inf") >>>ninf=float("-inf") >>>nan=float("nan") >>>infisinf True >>>ninfisninf True >>>nanisnan True >>>inf==inf True >>>ninf==ninf True >>>nan==nan False >>>infisfloat("inf") False >>>ninfisfloat("-inf") False >>>nanisfloat("nan") False >>>inf==float("inf") True >>>ninf==float("-inf") True >>>nan==float("nan") False 首先,對于正負(fù)無窮和NaN自身與自身用is操作,結(jié)果都是True,這里好像沒有什么問題;但是如果用==操作,結(jié)果卻不一樣了,NaN這時變成了False。如果分別用float重新定義一個變量來與它們再用is和==比較,結(jié)果仍然出人意料。出現(xiàn)這種情況的原因稍稍有些復(fù)雜,這里就不贅術(shù)了,感興趣可以查閱相關(guān)資料。 既然我在談?wù)撨@個問題,就再忠告:不要在Python中試圖用is和==來判斷一個對象是否是正負(fù)無窮或者NaN。乖乖的用math模塊就OK了,否則就是引火燒身。 以上內(nèi)容為大家介紹了Python中的inf與nan,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。