it-swarm.com.ru

Максимальные и минимальные значения для целых

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

532
bdhar

Python 3

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

Тем не менее, вы, возможно, на самом деле ищете для машины Размер слова. Это все еще доступно в Python 3 как sys.maxsize

Python 2

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

>>> sys.maxint
9223372036854775807

Вы можете рассчитать минимальное значение с помощью -sys.maxint - 1, как показано здесь

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

613
senderle

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

Целые

  • PEP 237: по сути, давно переименован в int. То есть существует только один встроенный тип с именем int; но он ведет себя в основном как старый длинный тип.
  • 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

185
Akash Rana

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

float('inf')

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

float('-inf')

Это работает как в Python 2 и 3.

144
Melle

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

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

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

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

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

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
73
John Kugelman

Для Python 3 это

import sys
max = sys.maxsize
min = -sys.maxsize -1
22
netskink

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

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

1
Wender

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

np.iinfo(np.intp).max

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

Если вы хотите max для родного int на машине:

np.iinfo(np.intc).max

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

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

0
Shital Shah

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

import sys

INT_MAX = sys.maxsize  

INT_MIN = -sys.maxsize-1


print(INT_MAX,INT_MIN)
0
Deep Nirmal