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

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '348095',
    'url' => 'why-does-one-of-these-code-segment-work-while-the-other-throws-an-overflow',
];

$_SESSION = [
    '__flash' => [],
];