Максимальные и минимальные значения для целых - PullRequest
592 голосов
/ 30 сентября 2011

Я ищу минимальные и максимальные значения для целых чисел в Python.Например, в Java у нас есть Integer.MIN_VALUE и Integer.MAX_VALUE.Есть ли что-то подобное в питоне?

Ответы [ 8 ]

679 голосов
/ 30 сентября 2011

Python 3

В Python 3 этот вопрос не применяется.Обычный тип int не ограничен.

Однако вы, возможно, действительно искали размер слова аппарата.Это все еще доступно в Python 3 как sys.maxsize.

Python 2

В Python 2 максимальное значение для простых значений int доступно как sys.maxint:

>>> sys.maxint
9223372036854775807

Минимальное значение можно рассчитать с-sys.maxint - 1 как показано здесь .

Python плавно переключается с простых чисел на длинные целые, когда вы превышаете это значение.Так что большую часть времени вам не нужно будет это знать.

197 голосов
/ 30 сентября 2014

sys.maxint константа была удалена из Python 3.0 и выше, вместо этого используйте sys.maxsize

Целые числа

  • PEP 237: по сути, давно переименован в int.То есть существует только один встроенный тип с именем int;но он ведет себя в основном как старый тип long.
  • PEP 238: выражение типа 1/2 возвращает число с плавающей точкой.Используйте 1 // 2, чтобы получить усечение.(Последний синтаксис существует годами, по крайней мере, с Python 2.2.)
  • Константа sys.maxint была удалена, так как больше нет ограничения на значение целых чисел.Однако sys.maxsize можно использовать как целое число, большее, чем любой практический список или строковый индекс.Он соответствует «естественному» целочисленному размеру реализации и обычно совпадает с sys.maxint в предыдущих выпусках на той же платформе (при условии, что используются те же параметры сборки).
  • repr () для длинного целого не делаетбольше не включать завершающий L, поэтому код, который безоговорочно удаляет этот символ, вместо этого отсекает последнюю цифру.(Вместо этого используйте str ().)
  • Восьмеричные литералы больше не имеют форму 0720;используйте 0o720.

См .: https://docs.python.org/3/whatsnew/3.0.html

170 голосов
/ 18 мая 2016

Если вам просто нужен номер, который больше, чем все остальные, вы можете использовать

float('inf')

аналогичным образом, число меньше, чем все остальные:

float('-inf')

Это работает воба питона 2 и 3.

76 голосов
/ 30 сентября 2011

В Python целые числа автоматически переключаются из представления int фиксированного размера в представление переменной ширины long после передачи значения sys.maxint, которое либо 2 31 - 1 или 2 63 - 1 в зависимости от вашей платформы. Обратите внимание на L, который добавляется здесь:

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

Из Руководства по Python :

Числа создаются числовыми литералами или в результате встроенных функций и операторов. Неукрашенные целочисленные литералы (включая двоичные, шестнадцатеричные и восьмеричные числа) дают простые целые числа, если только значение, которое они обозначают, не слишком велико, чтобы быть представленным в виде простого целого числа, и в этом случае они дают длинное целое число. Целочисленные литералы с суффиксом 'L' или 'l' дают длинные целые числа ('L' предпочтительнее, потому что 1l выглядит слишком похоже на одиннадцать!).

Python очень старается притвориться, что его целые числа являются математическими и неограниченными. Например, он может легко вычислить googol :

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
26 голосов
/ 02 марта 2017

Для Python 3 это

import sys
max = sys.maxsize
min = -sys.maxsize -1
5 голосов
/ 25 февраля 2019

Используя модуль sys (python 3)

import sys

INT_MAX = sys.maxsize  

INT_MIN = -sys.maxsize-1


print(INT_MAX,INT_MIN)
3 голосов
/ 15 января 2019

Если вам нужно максимальное значение для индексов массива или списка (эквивалентное size_t в C / C ++), вы можете использовать numpy:

np.iinfo(np.intp).max

Это то же самое, что и sys.maxsize, однако преимущество заключается в том, чтоВам не нужно импортировать sys только для этого.

Если вы хотите, чтобы max для native int на машине:

np.iinfo(np.intc).max

Другие доступные типы вы можете посмотреть в doc .

Для поплавков вы также можете использовать sys.float_info.max.

2 голосов
/ 11 июня 2018

Я в значительной степени полагаюсь на такие команды.

python -c 'import sys; print(sys.maxsize)'

Максимальное возвращаемое значение int: 9223372036854775807

Для получения дополнительных ссылок на 'sys' вы должны получить доступ

https://docs.python.org/3/library/sys.html

https://docs.python.org/3/library/sys.html#sys.maxsize

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