2011-01-03 22 views
63

Python'da, kullanabileceği en büyük tamsayı elde etmenin bir yolu var mı? INT_MAX gibi önceden belirlenmiş bir sabit var mı?Python tamsayı aralıkları

cevap

114

Python, isteğe bağlı kesinlikli tamsayılara sahiptir, dolayısıyla gerçekte hiçbir sabit maksimum yoktur. Sadece mevcut hafıza ile sınırlıdır.

Python 2'de iki tür vardır, int ve long. int s bir C tipi kullanırken, long s isteğe bağlı olarak hassastır. En fazla int bulmak için sys.maxint'u kullanabilirsiniz.

sys.maxint + 1 

çalışıyor ve bir long döndürür: genellikle bu konuda endişelenmenize gerek kalmaz Ama int ler otomatik long terfi. int ve long tek keyfi hassas int türü içine birleşik beri

sys.maxint

bile, Python 3'te mevcut değil. bir isteğe bağlı olarak geniş değer gerektiğinde (yukarı ve Python 2.6 ve) Python 3 'sys.maxsize` kullanılabileceğini

+26

not edin. – mattdm

+0

uzun olmayan bir tane var mı? –

+0

'sys.maxsize', python 2 ve 3 için kapsayıcıların boyutu üzerinde teorik sınır olmaya devam ediyor (çünkü teorik, bellek gerçek sınırlayıcı faktördür) –

0
import re 
import sys 
import platform 
import struct 

formats = { 
      "int":{"p_type":"integer", "format":"i"}, 
      "float":{"p_type":"float", "format":"f"}, 
      "double":{"p_type":"float", "format":"d"} 
      }  

sys_bit = int(re.findall(r"\d+", platform.architecture()[0])[0])/8 
for k,v in formats.iteritems(): 
    print "max {0} {1}".format(k, 2**struct.Struct(v["format"]).size*sys_bit-1)-1) 
    print "min {0} {1}".format(k, -2**struct.Struct(v["format"]).size*sys_bit-1)) 
İlgili konular