Numpy berechnet falsch [Duplikat]

8

Ich benutze numpy wie diesen Code

%Vor%

Ich denke, das Ergebnis muss ähnlich sein 5000000050000000

Ich habe festgestellt, dass das Ergebnis bis fünf Zahlen in Ordnung ist. Weiß jemand, was passiert ist?

Grüße

    
Horus Ricardo Junoy 04.04.2017, 13:58
quelle

2 Antworten

8

Numpy macht hier keinen Fehler. Dieses Phänomen wird als Integerüberlauf bekannt.

%Vor%

Der 32-Bit-Integer-Typ, der in arange für die angegebene Eingabe verwendet wird, kann einfach nicht 5000000050000000 halten. Es kann höchstens 2147483647 .

Wenn Sie explizit einen größeren Integer- oder Gleitkomma-Datentyp verwenden, erhalten Sie das erwartete Ergebnis.

%Vor%     
kazemakase 04.04.2017 14:25
quelle
5

Ich vermute, dass Sie Windows verwenden, wobei der Datentyp des Ergebnisses eine 32-Bit-Ganzzahl ist (während für Benutzer, die beispielsweise Mac OS X oder Linux verwenden, der Datentyp 64 Bit ist). Beachten Sie, dass 5000000050000000 % (2**32) = 987459712

Versuchen Sie es mit

%Vor%

oder

%Vor%

P.S. Jeder, der Windows nicht verwendet, kann das Ergebnis folgendermaßen reproduzieren:

%Vor%     
Warren Weckesser 04.04.2017 14:25
quelle

Tags und Links