Python'da maksimum şamandıra nedir?


Yanıtlar:


273

İçin floatde bakabilirsiniz 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)

Özellikle sys.float_info.max:

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

Bu yeterince büyük değilse, her zaman pozitif sonsuzluk vardır :

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

longTipi sınırsız hassasiyete sahiptir Ben sadece mevcut hafıza ile sınırlıdır düşünüyorum bu yüzden.


1
aslında, sys.maxint benim uygulama için yeterli olduğunu buldum
ladyfafa

Görünüşe göre sys.float_infov2.6'dan itibaren kullanılabilir. V2.3-5 hakkında ne dersiniz?
Aleksei Fedotov

1
Not sys.float_info.min "minimum pozitif normalleştirilmiş kayan nokta" olarak tanımlanır . Daha küçük denormal değerler mümkündür, aşağıya kadar5e-324
Bob Stein

1
Harika, ikisi de çok faydalı. infPython ve her şey için float_info.maxbir geçici çözüm olarak, daha önce işe yaramadığında, örneğin time.sleep(float("inf"))izin verilmez :(
Dima Tisnek

2
@ ladyfafa: sys.maxint Python 3'te kayboldu, diğer cevaptaki yorumlara da bakın ve stackoverflow.com/questions/13795758/…
Joachim Wagner

16

sys.maxint, python tarafından desteklenen en büyük tamsayı değildir. Python'un normal tamsayı türü tarafından desteklenen en büyük tam sayıdır.


10
+1 Bu önemlidir. Py3k'te neredeyse anlamsız - Python'un (şeffaf olarak!) Temel veri tipini değiştirdiği nokta long.
Katriel

6
@katrielalex: sys.maxintPython 3'te tanımlanmamıştır, buna sys.maxsizemuhtemelen Python 2'de de tercih edilir.
Scott Griffiths

14
@Scott Griffiths: Pek değil. sys.maxsize(Python 2.6'da tanıtıldı) ve sys.maxintiki farklı şeydir. Birincisi, bir koleksiyonda izin verilen maksimum nesne sayısını verir (örneğin, bir listenin maksimum boyutu, dikte vb.) Ve C size_ttürünün imzalı bir sürümüne karşılık gelir ; ikincisi, inttipin geçtiği noktadır longve C'nin maksimum değeridir long. Örneğin, 64-bit Windows üzerinde: Bazı platformlarda iki değer farklıdır sys.maxsizeolduğunu 2**63-1ve sys.maxintbir 2**31-1.
Mark Dickinson

@Mark Dickinson: Düzeltme için teşekkürler - Farklı olabileceklerini fark etmemiştim (Snow Leopard'da 64-bit Python ile ikisi de 2**63-1).
Scott Griffiths


7

Eğer kullanıyorsanız numpy , kullanabilirsiniz d_type ' float128 ' ve bir maksimum float almak 10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.