2013-07-13 29 views
20

Po prostu pytanie, które jest trochę zdezorientowany, oCo to jest inf i nan?

Tak więc miałem do czynienia z float('inf') i zastanawiam się, do czego jest używany.

Zauważyłem również, że jeśli dodaję -inf + inf, otrzymam nan to tyle samo, co zero.

Jestem zdezorientowany tym, jakie są zastosowania tych dwóch wartości.

Również gdy robię nie dostaję Dostaję nan Jestem pewien, że to wszystko jest bardzo proste, ale natknąłem się na nich i nie wiem, co robią.

Odpowiedz

34

inf nieskończoność - to wartość, która jest większa od każdej innej wartości. -inf jest zatem mniejszy niż jakakolwiek inna wartość.

nan oznacza Nie numer, a to nie jest równe 0.

Chociaż dodatnie i ujemne nieskończoność może być określony symetryczne 0, to samo można powiedzieć, że dla każdej wartości n, co oznacza, że ​​w wyniku dodawania dwóch wydajności nan. Pomysł ten omówiono w this math.se question.

Ponieważ nan jest (dosłownie) nie jest liczbą, nie można zrobić arytmetyczne z nim, więc rezultatem drugiej operacji nie jest również pewna liczba (nan)

+0

ohhhh haha ​​właśnie zastanawiasz się dzięki Vol! – Serial

2

nan oznacza "nie numer", wartość zmiennoprzecinkową otrzymaną w przypadku wykonywania obliczeń, których wyniku nie można wyrazić jako liczby. Wszelkie obliczenia wykonane z NaN będą również skutkować NaN.

inf oznacza nieskończoność.

Na przykład

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

Inf jest nieskończoność, jest to „większe niż wszystkie inne liczby ". Spróbuj odjąć od niego wszystko, co chcesz, nie zmniejsza się. Wszystkie liczby to < Inf. -Inf jest podobny, ale mniejszy niż wszystko.

NaN oznacza nie-liczbę. Jeśli spróbujesz wykonać obliczenia, które nie ma sensu, otrzymasz NaN. Inf - Inf jest jednym z takich obliczeń. Zwykle oznacza to, że brakuje niektórych danych.

2

Mówisz:

kiedy robię nan - inf dont dostać -inf ja dostać nan

To dlatego, że każda operacja zawierająca NaN jako argumentu wróci NaN.

Porównanie z NaN zwróci wynik nieuporządkowany.

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