Jaka jest maksymalna liczba zmiennoprzecinkowa w Pythonie?


172

Myślę, że maksymalna liczba całkowita w Pythonie jest dostępna przez wywołanie sys.maxint.

Jakie jest maksimum floatlub longw Pythonie?


Nie ma sys.maxintw Pythonie 3.
David McCorrie

Odpowiedzi:


273

Dla floatrzucić okiem na sys.float_info:

>>> import sys
>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2
250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsil
on=2.2204460492503131e-16, radix=2, rounds=1)

W szczególności sys.float_info.max:

>>> sys.float_info.max
1.7976931348623157e+308

Jeśli to nie jest wystarczająco duże, zawsze istnieje nieskończoność dodatnia :

>>> infinity = float("inf")
>>> infinity
inf
>>> infinity / 10000
inf

longTyp ma nieograniczonej precyzji , więc myślę, że jesteś ograniczony tylko pojemnością pamięci.


1
właściwie stwierdziłem, że sys.maxint jest w zupełności wystarczający do mojej aplikacji
ladyfafa

Wydaje się, że sys.float_infojest dostępny od wersji 2.6. A co z wersją 2.3-5?
Aleksei Fedotov

1
Uwaga: sys.float_info.min jest zdefiniowany jako „minimalny dodatni znormalizowany float”. Możliwe są mniejsze wartości denormalne , aż do5e-324
Boba Steina

1
Fajnie, oba są bardzo przydatne. infdla wszystkich rzeczy w Pythonie i float_info.maxjako obejście, gdy wcześniejsza nie działa, na przykład time.sleep(float("inf"))jest niedozwolona :(
Dima Tisnek

2
@ladyfafa: sys.maxint zniknął w Pythonie 3, zobacz także komentarze w innej odpowiedzi i stackoverflow.com/questions/13795758/ ...
Joachim Wagner

16

sys.maxint nie jest największą liczbą całkowitą obsługiwaną przez Pythona. Jest to największa liczba całkowita obsługiwana przez zwykły typ liczby całkowitej w Pythonie.


10
+1 To jest ważne. W Py3k jest to prawie bez znaczenia - jest to punkt, w którym Python (w sposób przejrzysty!) Zmienia podstawowy typ danych na long.
Katriel

6
@katrielalex: sys.maxintnie jest nawet zdefiniowany w Pythonie 3, jest wywoływany sys.maxsize, co prawdopodobnie będzie preferowane również w Pythonie 2.
Scott Griffiths

14
@Scott Griffiths: Niezupełnie. sys.maxsize(wprowadzone w Pythonie 2.6) i sys.maxintto dwie różne rzeczy. Pierwsza podaje maksymalną liczbę obiektów dozwolonych w kolekcji (np. Maksymalny rozmiar listy, dykt itp.) I odpowiada podpisanej wersji size_ttypu C ; drugi punkt po czym inttyp włącza się longi jest maksymalna wartość C long. Na niektórych platformach te dwie wartości są różne: np. W 64-bitowym systemie Windows sys.maxsizejest 2**63-1i sys.maxintjest 2**31-1.
Mark Dickinson

@Mark Dickinson: Dzięki za korektę - nie zdawałem sobie sprawy, że mogą one kiedykolwiek być inne (z 64-bitowym Pythonem na Snow Leopardzie są oboje 2**63-1).
Scott Griffiths


7

Jeśli używasz numpy można użyć dtypefloat128 ” i uzyskać max pływak z 10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.