Ganzzahlüberlauf mit großen Zahlen
Das obige Codefragment versucht, den größten Primfaktor einer bestimmten Ganzzahl, 600851475143, zu finden. Wann jedoch Wenn der Code ausgeführt wird, schlägt er mit einer Fehlermeldung fehl, die darauf hinweist, dass die Ganzzahl zu groß ist.
Beim Arbeiten mit großen Zahlen in Java ist es wichtig, die verfügbaren Datentypen und deren Grenzen zu berücksichtigen.
Ganzzahlen
Ganzzahlen werden in Java durch Werte mit fester Breite dargestellt. 32-Bit-Ganzzahlen (Typ int) können Werte von -2^31 bis 2^31-1 (ungefähr -2 Milliarden bis 2 Milliarden) enthalten. 64-Bit-Ganzzahlen (Typ long) können Werte von -2^63 bis 2^63-1 (ungefähr -9 Trillionen bis 9 Trillionen) enthalten.
Im Beispielcode überschreitet die angegebene Zahl 600851475143 der Bereich von 32-Bit-Ganzzahlen. Infolgedessen interpretiert Java den Literalwert als 32-Bit-Ganzzahl und schneidet ihn fälschlicherweise auf einen negativen Wert ab, was zum Überlauffehler führt.
Lange Literale
Um einen Literalwert als 64-Bit-Ganzzahl anzugeben, muss ihm ein „L“ angehängt werden. Beispielsweise ist 600851475143L eine gültige Darstellung der gewünschten Zahl in Java.
Überarbeiteter Code
Durch Ändern des Literalwerts in 600851475143L können wir das Überlaufproblem beheben und Führen Sie das Programm erfolgreich aus.
... obj.function(600851475143L); ...
Das obige ist der detaillierte Inhalt vonWarum schlägt mein Java-Code mit einem Ganzzahlüberlauf fehl, wenn ich versuche, Primfaktoren von 600851475143 zu finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!