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ı
63
A
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
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))
not edin. – mattdm
uzun olmayan bir tane var mı? –
'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) –