Максимальное значение для длинного целого - PullRequest
101 голосов
/ 25 марта 2012

Как я могу назначить максимальное значение длинного целого для переменной, аналогично, например, для C ++ LONG_MAX.

Ответы [ 7 ]

124 голосов
/ 25 марта 2012

Длинные целые числа:

Нет явного ограничения. Количество доступного адресного пространства составляет практический предел.
(Взято с этого сайта). См. Документы по Числовые типы , где вы увидите, что Long integers have unlimited precision. В Python 2 целые числа автоматически переключаются на длинные, когда они растут выше своего предела:

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>


для целых чисел имеем

maxint и maxsize:

Максимальное значение типа int можно найти в Python 2.x с помощью sys.maxint. Он был удален в Python 3, но вместо него часто можно использовать sys.maxsize. С список изменений :

Константа sys.maxint была удалена, поскольку ограничения больше нет к значению целых чисел. Тем не менее, sys.maxsize может использоваться как целое число больше, чем любой практический список или строковый индекс. Соответствует «натуральный» целочисленный размер реализации и, как правило, тот же как sys.maxint в предыдущих выпусках на той же платформе (при условии такие же варианты сборки).

и, для всех, кто интересуется разница (Python 2.x):

sys.maxint Наибольшее положительное целое число, поддерживаемое регулярным Python целочисленный тип. Это как минимум 2 ** 31-1. Наибольшее отрицательное целое число is -maxint-1 - асимметрия является результатом использования комплемента 2 двоичная арифметика.

sys.maxsize Наибольшее положительное целое число, поддерживаемое платформой Тип Py_ssize_t и, следовательно, списки максимального размера, строки, dicts и многие другие контейнеры могут иметь.

и для полноты вот версия Python 3 :

sys.maxsize Целое число, дающее максимальное значение, которое может принимать переменная типа Py_ssize_t. Обычно это 32 ^ 31 - 1 на 32-битной платформе и 2 ^ 63 - 1 на 64-битной платформе.

поплавки:

Есть float("inf") и float("-inf"). Их можно сравнить с другими числовыми типами:

>>> import sys
>>> float("inf") > sys.maxsize
True
36 голосов
/ 25 марта 2012

Python long может быть сколь угодно большим. Если вам нужно значение, которое больше, чем любое другое значение, вы можете использовать float('inf'), поскольку у Python нет проблем при сравнении числовых значений разных типов. Аналогично, для значения, меньшего, чем любое другое значение, вы можете использовать float('-inf').

19 голосов
/ 25 марта 2012

Прямой ответ на заглавный вопрос:

Целые числа не ограничены в размере и не имеют максимального значения в Python.

Ответ, который обращается к указанному основному варианту использования:

СогласноВаш комментарий о том, что вы пытаетесь сделать, в настоящее время вы думаете о чем-то вроде

minval = MAXINT;
for (i = 1; i < num_elems; i++)
    if a[i] < a[i-1]
        minval = a[i];

Это не так, как думать в Python.Лучшим переводом на Python (но все же не лучшим) будет

minval = a[0]  # Just use the first value
for i in range(1, len(a)):
    minval = min(a[i], a[i - 1])

Обратите внимание, что в приведенном выше примере MAXINT вообще не используется.Эта часть решения применима к любому языку программирования: вам не нужно знать максимально возможное значение, чтобы найти наименьшее значение в коллекции.

Но в любом случае, то, что вы действительно do в Python это просто

minval = min(a)

То есть вы вообще не пишете цикл.Встроенная функция min() получает минимум всей коллекции.

8 голосов
/ 25 марта 2012
Тип

long в Python 2.x использует арифметику произвольной точности и не имеет такого понятия, как максимально возможное значение. Он ограничен доступной памятью. В Python 3.x нет специального типа для значений, которые не могут быть представлены целым числом собственной машины - все равно int, а преобразование выполняется за кулисами.

7 голосов
/ 25 марта 2012

В отличие от C / C ++ Long в Python имеют неограниченную точность.Обратитесь к разделу Числовые типы в python для получения дополнительной информации. Чтобы определить максимальное значение целого числа, вы можете просто сослаться на sys.maxint.Вы можете получить более подробную информацию из документации sys .

0 голосов
/ 09 декабря 2017

В python3 вы можете отправить значение с плавающей точкой в ​​функцию int, получив число 1.7976931348623157e + 308 в целочисленном представлении.

import sys    
int(sys.float_info.max)
0 голосов
/ 24 декабря 2014

Вы можете использовать: максимальное значение с плавающей точкой

float('inf')

для отрицательных

float('-inf')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...