Warum funktioniert eines dieser Codesegmente, während das andere einen Überlauf auslöst?

8

Ich arbeite mit Python und ich versuche, Kräfte von wirklich großen Zahlen zu finden, aber etwas Interessantes, was passiert, ist, dass dies einen mathematischen Überlauf verursacht

%Vor%

aber das unten scheint zu funktionieren, obwohl ich nicht weiß, ob der zurückgegebene Wert korrekt ist

%Vor%

Jeder weiß, warum das passiert

    
cobie 12.04.2013, 16:54
quelle

2 Antworten

7

math.pow :

  

Anders als der integrierte Operator ** konvertiert math.pow() beide Argumente in den Typ float . Verwenden Sie ** oder die integrierte pow() -Funktion zum Berechnen der genauen ganzzahligen Potenzen.

    
Josh Lee 12.04.2013, 16:56
quelle
8

Einfach, die math.pow() Methode verwendet C float Bibliotheken, während der ** power Operator Ganzzahlmathematik verwendet.

Die beiden Methoden haben unterschiedliche Einschränkungen. Python int size wird nur durch den Speicher begrenzt, den Ihr Betriebssystem Python zur Verfügung stellen wird. Die Anzahl der Gleitkommazahlen ist durch Ihre Computerarchitektur begrenzt, siehe sys.float_info.max .

    
Martijn Pieters 12.04.2013 16:56
quelle

Tags und Links