В Python существует ли способ получить наибольшее целое число, которое можно использовать? Есть ли определенная константа, такая как INT_MAX?
Целочисленные диапазоны Python
Ответ 1
Python имеет произвольные целые числа точности, поэтому истинного фиксированного максимума нет. Вы ограничены доступной памятью.
В Python 2 существуют два типа: int
и long
. int
используйте тип C, а long
- произвольная точность. Вы можете использовать sys.maxint
, чтобы найти максимум int
. Но int
автоматически повышается до long
, поэтому вам обычно не нужно беспокоиться об этом:
sys.maxint + 1
работает нормально и возвращает a long
.
sys.maxint
даже не существует в Python 3, поскольку int
и long
были объединены в один тип произвольной точности int
.
Ответ 2
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))