Търся минимални и максимални стойности за цели числа в питон. Например в Java имаме Integer.MIN_VALUE
и Integer.MAX_VALUE
. Има ли нещо подобно в питон?
В Python 3 този въпрос не е приложим. Обикновеният тип int
е неограничен.
Всъщност обаче може да търсите размера на думата. Това все още е налично в Python 3 като sys.maxsize
.
В Python 2 максималната стойност за обикновени стойности int
е налична като sys.maxint
:
>>> sys.maxint
9223372036854775807
Можете да изчислите минималната стойност с -sys.maxint - 1
, както е показано тук.
Python безпроблемно преминава от обикновени към дълги цели числа, щом надхвърлите тази стойност. Така че през повечето време няма да ви е необходимо да я знаете.
Константата sys.maxint е премахната от Python 3.0 нататък, вместо това използвайте sys.maxsize
Цели числа
- PEP 237: По същество long е преименуван на int. Това означава, че има само един вграден интегрален тип, наречен int; но той се държи предимно като стария тип long.
- PEP 238: Израз като 1/2 връща float. Използвайте 1//2, за да получите поведението на съкращаване. (Последният синтаксис съществува от години, в поне от Python 2.2.)
- Премахната е константата sys.maxint, тъй като вече няма ограничение за стойността на целите числа. Въпреки това sys.maxsize може да се използва като цяло число, което е по-голямо от всеки практически индекс на списък или низ. Тя съответства на "естествения" размер на цялото число на имплементацията и обикновено е същото като sys.maxint в предишни версии на същата платформа (ако приемем, че същите опции за изграждане).
- Repr() на дълго цяло число вече не включва завършващото L, така че кодът, който безусловно премахва този символ, ще отреже последната цифра вместо това. (Вместо това използвайте str().)
- Осемцифрените литерали вече не са във формата 0720; вместо това използвайте 0o720.
В Python целите числа автоматично преминават от представяне с фиксиран размер int
в представяне с променлива ширина long
, след като предадете стойността sys.maxint
, която е или 231 - 1, или 263 - 1 в зависимост от вашата платформа. Обърнете внимание на добавката L
, която се добавя тук:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
Числата се създават чрез числови литерали или като резултат от вградени функции и оператори. Неподправените целочислени литерали (включително двоични, шестнайсетични и осмични числа) дават обикновени цели числа, освен ако стойността, която обозначават, е твърде голяма, за да бъде представена като обикновено цяло число, в който случай дават дълго цяло число. Целочислените литерали със суфикс
'L'
или'l'
дават дълги цели числа ('L'
е за предпочитане, защото1l
прилича твърде много на единадесет!).
Python много се старае да се преструва, че неговите цели числа са математически цели числа и са неограничени. Той може например да изчисли googol с лекота:
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L