2013-07-13 102 views
20

只是一個問題,我有點困惑什麼是inf和nan?

所以我搞亂float('inf')和那種想知道它用於什麼。

另外我注意到,如果我添加-inf + inf我得到nan是那樣的零或不。

我很困惑這兩個值的用途是什麼。

同樣當我做nan - inf我沒有得到-inf我得到nan我確定這一切都很簡單,但我偶然發現他們,不知道他們做了什麼。

回答

34

inf是無窮大 - 這是比任何其他值更大的值。 -inf因此小於任何其他值。

nan代表非A號碼,這不等於0

雖然正負無窮大可以說是關於0的對稱關係,但對於任何值n都可以這樣說,這意味着將兩者相加產生的結果爲nan。這個想法在this math.se question中討論。

因爲nan是(字面意思)不是一​​個數字,你不能做算術吧,所以第二個操作的結果也不是一個數量(nan

+0

ohhhh哈哈只是想知道謝謝卷! – Serial

2

nan意思是「不是一個數字」,這是一個浮點值,如果您執行的計算結果不能用數字表示。您使用NaN執行的任何計算也將導致NaN

inf表示無窮大。

例如:

>>> 2*float("inf") 
inf 
>>> -2*float("inf") 
-inf 
>>> float("inf")-float("inf") 
nan 
3

Inf是無窮大,這是一個「大比所有其他數字「的數字。嘗試從它減去任何你想要的東西,它不會變小。所有數字都是< Inf-Inf是類似的,但比一切都小。

NaN表示不是數字。如果你嘗試做一個沒有意義的計算,你會得到NaNInf - Inf就是這樣一種計算。通常使用NaN僅表示缺少一些數據。

2

你說:

當我這樣做nan - inf我不明白-inf我得到nan

這是因爲含NaN任何操作作爲操作數將返回NaN

NaN的比較將返回無序結果

>>> float('Inf') == float('Inf') 
True 
>>> float('NaN') == float('NaN') 
False