Максимальні та мінімальні значення для інтів

Шукаю мінімальне та максимальне значення для цілих чисел в python. Наприклад, в Java є Integer.MIN_VALUE та Integer.MAX_VALUE. Чи є щось подібне в python?

Рішення

Python 3

У Python 3 це питання не актуальне. Простий тип int є необмеженим.

Однак, можливо, ви насправді шукаєте машинний розмір слова. Він все ще доступний у Python 3 як ys.maxsize.

Python 2

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

>>> sys.maxint
9223372036854775807

Мінімальне значення можна обчислити за допомогою -sys.maxint - 1, як показано тут.

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

Коментарі (13)

константа sys.maxint була видалена з Python 3.0, замість неї використовуйте sys.maxsize

Цілі числа Цілі числа;

  • PEP 237: По суті, long перейменовано в int. Тобто, є тільки один вбудований цілочисельний тип з іменем int; але він поводить себе в основному як старий тип long. ПЕП 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

Коментарі (0)

У мові Python цілі числа автоматично переключаються з представлення фіксованого розміру int у представлення змінної ширини long, як тільки ви передаєте значення ys.maxint, яке дорівнює або 231 - 1, або 263 - 1 в залежності від вашої платформи. Зверніть увагу на L, яка тут додається:

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

З Python manual:

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

Python дуже старанно намагається зробити вигляд, що його цілі числа є математичними цілими і необмеженими. Наприклад, він може з легкістю обчислити googol:

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
Коментарі (1)