Я не уверен, что целые числа Python вообще ограничены. В тот момент, когда вы пересекаете sys.maxint, он меняет внутреннее представление с int на long, которое имеет неограниченное значение.
tchap
Я спросил, потому что мне нужно найти минимальное значение среди группы значений одно за другим. Итак, сначала мне нужно сохранить большое значение в переменной, чтобы я мог сравнивать его с другими,
Sreevisakh
2
На ваш комментарий - рекомендую использовать встроенную функцию min.
Jiri
5
Вам не нужно максимальное значение, если вы просто пытаетесь найти минимум, даже если вы программируете на C ++ или любом другом языке. Если вы все равно собираетесь перебрать все элементы в цикле, просто используйте первый элемент в качестве начального значения. (Но лучше использовать эту minфункцию, если вы действительно хотите программировать на Python!)
John Y
3
@Sreevisakh: для «большого значения», использование бесконечности float("inf"). А лучше использовать встроенную minфункцию.
Fred Foo
Ответы:
132
Длинные целые числа:
Явно определенного предела нет. Количество доступного адресного пространства является практическим пределом.
(Взято с этого сайта). См. Документацию по числовым типам, где вы это увидите Long integers have unlimited precision. В Python 2 целые числа автоматически переключаются на длинные, когда они превышают свой предел:
Максимальное значение int можно найти в Python 2.x с помощью sys.maxint. Он был удален в Python 3, но sys.maxsizeчасто может использоваться вместо него. Из журнала изменений :
Константа sys.maxint была удалена, поскольку больше нет ограничения на значение целых чисел. Однако sys.maxsize можно использовать как целое число, большее, чем любой практический список или строковый индекс. Он соответствует «естественному» целочисленному размеру реализации и обычно такой же, как sys.maxint в предыдущих выпусках на той же платформе (при тех же параметрах сборки).
sys.maxint Наибольшее положительное целое число, поддерживаемое обычным целочисленным типом Python. Это минимум 2 ** 31-1. Наибольшее отрицательное целое число - -maxint-1 - асимметрия возникает в результате использования двоичной арифметики с дополнением до 2.
sys.maxsize Наибольшее положительное целое число, поддерживаемое типом Py_ssize_t платформы, и, следовательно, списки максимального размера, строки, dicts и многие другие контейнеры.
sys.maxsize
Целое число, задающее максимальное значение, которое может принимать переменная типа Py_ssize_t. Обычно это 2 ^ 31-1 на 32-битной платформе и 2 ^ 63-1 на 64-битной платформе.
поплавки:
Есть float("inf")и float("-inf"). Их можно сравнить с другими числовыми типами:
Я пробовал тот же код, но он все еще показывает тип как int в python 3 на 64-битной машине Windows. Любая уважаемая причина для этого.
ManojP
1
@ManojP Это потому, что в Python 3 больше нет ограничения на размер целых чисел. См. Первую цитату из блока. Я отредактирую, чтобы уточнить, что это Python 2
keyser
40
Python longможет быть сколь угодно большим. Если вам нужно значение, которое больше любого другого значения, вы можете использовать float('inf'), поскольку Python не имеет проблем со сравнением числовых значений разных типов. Точно так же для значения, меньшего, чем любое другое значение, вы можете использовать float('-inf').
Он возвращает бесконечность с плавающей запятой, которая больше любого конечного числа.
Taymon
4
Я должен сказать, что этот ответ определенно наиболее близок к правильному с точки зрения ответа на вопрос заголовка ОП. То есть «как получить контрольное значение Python, которое будет больше, чем все введенные вами данные (или, по крайней мере, не меньше, чем наибольшее значение)?». Итак, я проголосовал за этот ответ, но я думаю, что лучше, если OP научится думать на Python.
John Y
Согласовано. Тем не менее, я был в ситуации, когда это был единственный способ сделать то, что мне было нужно.
Taymon
21
Прямой ответ на заглавный вопрос:
Целые числа не имеют ограничений по размеру и не имеют максимального значения в Python.
Ответ, который касается указанного основного варианта использования:
Согласно вашему комментарию о том, что вы пытаетесь сделать, в настоящее время вы думаете о чем-то вроде
В Python это не так. Лучшим переводом на Python (но все же не лучшим) было бы
minval = a[0]# Just use the first valuefor i in range(1, len(a)):
minval = min(a[i], a[i -1])
Обратите внимание, что в приведенном выше коде MAXINT вообще не используется. Эта часть решения применима к любому языку программирования: вам не нужно знать максимально возможное значение только для того, чтобы найти наименьшее значение в коллекции.
Но в любом случае то, что вы на самом деле делаете в Python, просто
minval = min(a)
То есть вы вообще не пишете цикл. Встроенная min()функция получает минимум всей коллекции.
longtype в Python 2.x использует арифметику произвольной точности и не имеет такого понятия, как максимально возможное значение. Ограничено доступной памятью. Python 3.x не имеет специального типа для значений, которые не могут быть представлены машинным целым числом - все есть, intи преобразование выполняется за кулисами.
В отличие от C / C ++ Long в Python имеет неограниченную точность. Обратитесь к разделу Числовые типы в python для получения дополнительной информации. Чтобы определить максимальное значение целого числа, вы можете просто сослаться sys.maxint. Вы можете получить более подробную информацию из документации sys .
Заголовок - «Максимальное значение для длинного целого числа» , а не максимальное значение с плавающей запятой. Итак, без объяснения того, как это отвечает на вопрос, я считаю это НАА (не ответом).
Sнаđошƒаӽ
0
В python3 вы можете отправить значение float в функцию int, чтобы получить это число 1.7976931348623157e + 308 в целочисленном представлении.
Это вообще не делает ничего полезного. Чтобы проиллюстрировать это, попробуйте int (sys.float_info.max) +1, и вы просто получите целое число, которое является еще одним, потому что, как объяснялось в других комментариях, Python просто хранит целые числа неограниченной точности.
min
функцию, если вы действительно хотите программировать на Python!)float("inf")
. А лучше использовать встроеннуюmin
функцию.Ответы:
Длинные целые числа:
Явно определенного предела нет. Количество доступного адресного пространства является практическим пределом.
(Взято с этого сайта). См. Документацию по числовым типам, где вы это увидите
Long integers have unlimited precision
. В Python 2 целые числа автоматически переключаются на длинные, когда они превышают свой предел:для целых чисел у нас есть
maxint и maxsize:
Максимальное значение int можно найти в Python 2.x с помощью
sys.maxint
. Он был удален в Python 3, ноsys.maxsize
часто может использоваться вместо него. Из журнала изменений :и для всех, кого интересует разница (Python 2.x):
и для полноты, вот версия Python 3 :
поплавки:
Есть
float("inf")
иfloat("-inf")
. Их можно сравнить с другими числовыми типами:источник
Python
long
может быть сколь угодно большим. Если вам нужно значение, которое больше любого другого значения, вы можете использоватьfloat('inf')
, поскольку Python не имеет проблем со сравнением числовых значений разных типов. Точно так же для значения, меньшего, чем любое другое значение, вы можете использоватьfloat('-inf')
.источник
Прямой ответ на заглавный вопрос:
Целые числа не имеют ограничений по размеру и не имеют максимального значения в Python.
Ответ, который касается указанного основного варианта использования:
Согласно вашему комментарию о том, что вы пытаетесь сделать, в настоящее время вы думаете о чем-то вроде
В Python это не так. Лучшим переводом на Python (но все же не лучшим) было бы
Обратите внимание, что в приведенном выше коде MAXINT вообще не используется. Эта часть решения применима к любому языку программирования: вам не нужно знать максимально возможное значение только для того, чтобы найти наименьшее значение в коллекции.
Но в любом случае то, что вы на самом деле делаете в Python, просто
То есть вы вообще не пишете цикл. Встроенная
min()
функция получает минимум всей коллекции.источник
long
type в Python 2.x использует арифметику произвольной точности и не имеет такого понятия, как максимально возможное значение. Ограничено доступной памятью. Python 3.x не имеет специального типа для значений, которые не могут быть представлены машинным целым числом - все есть,int
и преобразование выполняется за кулисами.источник
В отличие от C / C ++ Long в Python имеет неограниченную точность. Обратитесь к разделу Числовые типы в python для получения дополнительной информации. Чтобы определить максимальное значение целого числа, вы можете просто сослаться
sys.maxint
. Вы можете получить более подробную информацию из документации sys .источник
Вы можете использовать: максимальное значение float равно
для отрицательного
источник
В python3 вы можете отправить значение float в функцию int, чтобы получить это число 1.7976931348623157e + 308 в целочисленном представлении.
источник