Apa float maksimum dalam Python?

172

Saya pikir integer maksimum dalam python tersedia dengan memanggil sys.maxint.

Apa yang maksimal floatatau longdalam Python?

nona
sumber
Tidak ada sys.maxintdalam Python 3.
David McCorrie

Jawaban:

273

Untuk floatmelihat 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)

Secara khusus, sys.float_info.max:

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

Jika itu tidak cukup besar, selalu ada infinity positif :

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

The longjenis memiliki presisi terbatas , jadi saya pikir Anda hanya dibatasi oleh memori yang tersedia.

Dave Webb
sumber
1
sebenarnya, saya menemukan sys.maxint cukup untuk aplikasi saya
ladyfafa
Tampaknya sys.float_infotersedia mulai dari v2.6. Bagaimana dengan v2.3-5?
Aleksei Fedotov
1
Catatan sys.float_info.min didefinisikan sebagai " float dinormalisasi positif minimum ". Nilai - nilai denormal yang lebih kecil mungkin, hingga5e-324
Bob Stein
1
Keren, keduanya sangat berguna. infuntuk semua hal python, dan float_info.maxsebagai solusi ketika yang sebelumnya tidak bekerja, misalnya time.sleep(float("inf"))tidak diperbolehkan :(
Dima Tisnek
2
@ladyfafa: sys.maxint hilang dengan Python 3, lihat juga komentar di jawaban lain dan stackoverflow.com/questions/13795758/…
Joachim Wagner
16

sys.maxint bukan bilangan bulat terbesar yang didukung oleh python. Ini adalah integer terbesar yang didukung oleh tipe integer reguler python.

GWW
sumber
10
+1 Ini penting. Dalam Py3k, hampir tidak ada artinya - ini adalah titik di mana Python (transparan!) Mengubah tipe data yang mendasarinya long.
Katriel
6
@katrielalex: sys.maxintbahkan tidak didefinisikan dalam Python 3, itu disebut sys.maxsize, yang mungkin lebih disukai di Python 2 juga.
Scott Griffiths
14
@Scott Griffiths: Tidak cukup. sys.maxsize(diperkenalkan dengan Python 2.6) dan sys.maxintdua hal yang berbeda. Yang pertama memberikan jumlah maksimum objek yang diizinkan dalam koleksi (misalnya, ukuran maksimum daftar, dikt, dll.), Dan sesuai dengan versi bertanda size_ttipe C ; yang kedua adalah titik setelah itu intjenis beralih ke long, dan nilai maks C long. Pada beberapa platform, kedua nilai berbeda: misalnya, pada Windows 64-bit, sys.maxsizeapakah 2**63-1dan sys.maxintsekarang 2**31-1.
Mark Dickinson
@ Markus Dickinson: Terima kasih atas koreksinya - Saya tidak menyadari kalau mereka akan berbeda (dengan Python 64-bit pada Snow Leopard, keduanya 2**63-1).
Scott Griffiths
7

Jika Anda menggunakan numpy , Anda dapat menggunakan dtype ' float128 ' dan mendapatkan float maksimum 10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
Aelfinn
sumber