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