1271 Stimmen

Höchst- und Mindestwerte für ints

Wie stelle ich Minimal- und Maximalwerte für ganze Zahlen in Python dar? In Java haben wir Integer.MIN_VALUE y Integer.MAX_VALUE .

1312voto

senderle Punkte 135243

Python 3

In Python 3 stellt sich diese Frage nicht. Die einfache int Typ ist ungebunden.

Vielleicht suchen Sie aber auch nach Informationen über den aktuellen Interpreter [Wortgröße](http://en.wikipedia.org/wiki/Word(computer_architecture)#Table_of_wordsizes) , was in den meisten Fällen der Wortgröße des Rechners entspricht. Diese Information ist in Python 3 immer noch verfügbar als sys.maxsize was dem maximalen Wert entspricht, der durch ein Wort mit Vorzeichen dargestellt werden kann. Gleichbedeutend ist es die Größe der größtmöglichen Liste oder speicherinternen Reihenfolge .

Im Allgemeinen beträgt der maximale Wert, der durch ein Wort ohne Vorzeichen dargestellt werden kann sys.maxsize * 2 + 1 und die Anzahl der Bits in einem Wort ist math.log2(sys.maxsize * 2 + 2) . Siehe 本答 をご覧ください。

Python 2

In Python 2 ist der Höchstwert für einfache int Werte ist verfügbar als sys.maxint :

>>> sys.maxint
9223372036854775807

Sie können den Minimalwert berechnen mit -sys.maxint - 1 wie gezeigt aquí .

Python schaltet nahtlos von einfachen zu langen Ganzzahlen um, sobald Sie diesen Wert überschreiten. S

530voto

Melle Punkte 6641

Wenn Sie nur eine Zahl benötigen, die größer als alle anderen ist, können Sie

float('inf')

in ähnlicher Weise eine Zahl, die kleiner ist als alle anderen:

float('-inf')

Dies funktioniert sowohl in Python 2 als auch in Python 3.

321voto

Akash Rana Punkte 3347

El sys.maxint Konstante wurde ab Python 3.0 entfernt, verwenden Sie stattdessen sys.maxsize .

Ganze Zahlen

  • PEP 237: Im Wesentlichen wurde long in int umbenannt. Das heißt, es gibt nur noch einen eingebauten Integraltyp namens int, der sich aber weitgehend wie der alten long-Typ.
  • PEP 238: Ein Ausdruck wie 1/2 gibt eine Fließkommazahl zurück. Verwenden Sie 1//2, um das Trunkierungsverhalten zu erhalten. (Die letztere Syntax existiert schon seit Jahren, zumindest mindestens seit Python 2.2.)
  • Die Konstante sys.maxint wurde entfernt, da es keine Grenze für den Wert von Ganzzahlen mehr gibt. Allerdings kann sys.maxsize als eine ganze Zahl verwendet werden Ganzzahl verwendet werden, die größer als jeder praktische Listen- oder String-Index ist. Sie stimmt überein mit der "natürlichen" Integer-Größe der Implementierung und ist typischerweise die gleiche wie sys.maxint in früheren Versionen auf der gleichen Plattform (unter der Annahme, dass die gleichen Build-Optionen).
  • Die Funktion repr() einer langen Ganzzahl enthält das nachgestellte L nicht mehr, so dass Code, der dieses Zeichen bedingungslos entfernt, stattdessen die letzte Ziffer abschneidet. stattdessen die letzte Ziffer ab. (Verwenden Sie stattdessen str().)
  • Oktal-Literale haben nicht mehr die Form 0720; verwenden Sie stattdessen 0o720.

Siehe: https://docs.python.org/3/whatsnew/3.0.html#integers

128voto

netskink Punkte 3079

Für Python 3 lautet sie

import sys
max_size = sys.maxsize
min_size = -sys.maxsize - 1

94voto

John Kugelman Punkte 327535

In Python wechseln Ganzzahlen automatisch von einer festen Größe int Darstellung in eine variable Breite long Darstellung, sobald Sie den Wert übergeben sys.maxint die entweder 2 31 - 1 oder 2 63 - 1 je nach Plattform. Beachten Sie die L die hier angehängt wird:

>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L

De la Python-Handbuch :

Zahlen werden durch numerische Literale oder als Ergebnis von eingebauten Funktionen und Operatoren erzeugt. Ungeschmückte Ganzzahl-Literale (einschließlich Binär-, Hex- und Oktalzahlen) ergeben einfache Ganzzahlen, es sei denn, der Wert, den sie bezeichnen, ist zu groß, um als einfache Ganzzahl dargestellt zu werden; in diesem Fall ergeben sie eine lange Ganzzahl. Ganzzahlige Literale mit einem 'L' o 'l' Suffix ergeben lange Ganzzahlen ( 'L' bevorzugt wird, weil 1l sieht zu sehr nach elf aus!).

Python gibt sich große Mühe, so zu tun, als ob seine ganzen Zahlen mathematische ganze Zahlen und unbegrenzt wären. Es kann zum Beispiel eine googol mit Leichtigkeit:

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X