Qual é a flutuação máxima em Python?

172

Eu acho que o número máximo máximo em python está disponível chamando sys.maxint.

Qual é o máximo floatou longem Python?

ladyfafa
fonte
Não existe sys.maxintno Python 3.
David McCorrie

Respostas:

273

Para floatdar uma olhada em 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)

Especificamente sys.float_info.max:

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

Se isso não for grande o suficiente, sempre haverá um infinito positivo :

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

O longtipo tem precisão ilimitada , então acho que você está limitado apenas pela memória disponível.

Dave Webb
fonte
1
na verdade, eu encontrei o sys.maxint é o bastante para a minha candidatura
ladyfafa
Parece que sys.float_infoestá disponível a partir da v2.6. E a v2.3-5?
Aleksei Fedotov
1
Observe que sys.float_info.min é definido como "mínimo flutuante normalizado positivo ". Menores valores denormal são possíveis, até5e-324
Bob Stein
1
Legal, ambos são muito úteis. infpara todas as coisas python, e float_info.maxcomo uma solução alternativa quando o anterior não funciona, por exemplo, time.sleep(float("inf"))não é permitido :(
Dima Tisnek
2
@ladyfafa: sys.maxint se foi em Python 3, ver também os comentários na outra resposta e stackoverflow.com/questions/13795758/...
Joachim Wagner
16

sys.maxint não é o maior número inteiro suportado pelo python. É o maior número inteiro suportado pelo tipo inteiro regular do python.

GWW
fonte
10
+1 Isso é importante. No Py3k, é quase sem sentido - é o ponto no qual o Python (de forma transparente!) Altera o tipo de dados subjacente para long.
Katriel
6
@katrielalex: sys.maxintnem está definido no Python 3, é chamado sys.maxsize, o que provavelmente será o preferido no Python 2 também.
Scott Griffiths
14
@ Scott Griffiths: Não é bem assim. sys.maxsize(introduzido no Python 2.6) e sys.maxintsão duas coisas diferentes. O primeiro fornece o número máximo de objetos permitido em uma coleção (por exemplo, tamanho máximo de uma lista, ditado etc.) e corresponde a uma versão assinada do size_ttipo C ; o segundo é o ponto, após o que o inttipo muda para long, e é o valor máximo de uma C long. Em algumas plataformas, os dois valores são diferentes: por exemplo, no Windows de 64 bits, sys.maxsizeé 2**63-1e sys.maxinté 2**31-1.
Marque Dickinson
@ Mark Dickinson: Obrigado pela correção - eu não tinha percebido que eles poderiam ser diferentes (com o Python de 64 bits no Snow Leopard, ambos são 2**63-1).
Scott Griffiths
7

Se você estiver usando numpy , poderá usar o dtype ' float128 ' e obter um máximo de 10e + 4931

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