Максимальное и минимальное значения для ints

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

Ответ 1

Python 3

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

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

Python 2

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

>>> sys.maxint
9223372036854775807

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

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

Ответ 2

Константа

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

Целые

  • PEP 237: По существу, долго переименовывается в int. То есть существует только один встроенный интегральный тип с именем int; но он ведет себя в основном как старый длинный type.
  • PEP 238: выражение типа 1/2 возвращает float. Используйте 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

Ответ 3

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

float('inf')

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

float('-inf')

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

Ответ 4

В 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

Ответ 5

Для Python 3 это

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

Ответ 6

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

import sys

INT_MAX = sys.maxsize  

INT_MIN = -sys.maxsize-1


print(INT_MAX,INT_MIN)

Ответ 7

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

np.iinfo(np.intp).max

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

Если вы хотите использовать max для native int на компьютере:

np.iinfo(np.intc).max

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

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