Maximális és minimális értékek ints-ek számára

Egész számok minimális és maximális értékeit keresem pythonban. Java-ban például van Integer.MIN_VALUE és Integer.MAX_VALUE. Van valami hasonló a pythonban?

Megoldás

Python 3

A Python 3-ban ez a kérdés nem érvényes. Az egyszerű int típus korlátlan.

Azonban valójában a gép word size értékét keresheted. Ez a Python 3-ban még mindig elérhető sys.maxsize néven.

Python 2

A Python 2-ben a sima int értékek maximális értéke sys.maxint néven érhető el:

>>> sys.maxint
9223372036854775807

A minimális értéket a -sys.maxint - 1 segítségével számíthatjuk ki, ahogyan [itt] (https://docs.python.org/2/library/sys.html#sys.maxint) látható.

A Python zökkenőmentesen átvált a sima egész számokról a hosszú egész számokra, amint túlléped ezt az értéket. Tehát az esetek többségében nem lesz'szükséged ennek ismeretére.

Kommentárok (13)

A sys.maxint konstanst a Python 3.0-tól kezdve eltávolították, helyette használd a sys.maxsize konstanst.

Egészek

  • PEP 237: Lényegében long átnevezve int-re. Vagyis csak egy beépített integrál típus van, int néven; de ez többnyire úgy viselkedik, mint a régi long típus.
  • PEP 238: Az 1/2 típusú kifejezés egy float értéket ad vissza. Használjuk az 1//2-t a csonkító viselkedés eléréséhez. (Ez utóbbi szintaxis már évek óta létezik, a legalábbis a Python 2.2 óta.)
  • A sys.maxint konstans eltávolításra került, mivel az egész számok értékének már nincs határa. A sys.maxsize azonban használható, mint egy egész szám nagyobb, mint bármely praktikus lista vagy string indexe. Ez megfelel a az implementáció "természetes" egész szám méretének, és jellemzően megegyezik a mint a sys.maxint a korábbi kiadásokban ugyanazon a platformon (feltételezve, hogy a ugyanazokat a build opciókat).
  • A hosszú egész számok repr() funkciója már nem tartalmazza az utolsó L betűt, így az a kód, amely feltétel nélkül eltávolítja ezt a karaktert, levágja a utolsó számjegyet. (Használja helyette a str() funkciót.)
  • A nyolcjegyű literálok már nem a 0720-as formájúak; használjuk helyette a 0o720-at.

Lásd : https://docs.python.org/3/whatsnew/3.0.html

Kommentárok (0)

A Pythonban az egész számok automatikusan átváltanak a fix méretű int ábrázolásról a változó szélességű long ábrázolásra, amint átadod a sys.maxint értéket, amely a platformtól függően vagy 231 - 1 vagy 263 - 1 lesz. Figyeljük meg az L-t, ami itt hozzá lesz csatolva:

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

A Python kézikönyvből:

A számokat numerikus literálok vagy beépített függvények és operátorok eredményeként hozzuk létre. A díszítetlen egész szám literálok (beleértve a bináris, hexa és oktális számokat) egyszerű egész számokat adnak, kivéve, ha az általuk jelölt érték túl nagy ahhoz, hogy egyszerű egész számként ábrázolható legyen, ebben az esetben hosszú egész számot adnak. Az 'L' vagy 'l' utótaggal ellátott egész literálok hosszú egészeket adnak (az 'L' előnyösebb, mert az 1l túlságosan úgy néz ki, mint a tizenegy!).

A Python nagyon igyekszik úgy tenni, mintha az egész számok matematikai egész számok lennének, és nem lennének korlátlanok. Könnyedén ki tudja például számolni a googol számot:

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
Kommentárok (1)