2009-09-03 11 views
10

Was könnte dieses merkwürdige Python-Verhalten verursachen?Seltsames Python-Verhalten auf der Maschine mit ARM-CPU

Python 2.6.2 (r262:71600, May 31 2009, 03:55:41) 
[GCC 3.3.4] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> .1 
1251938906.2350719 
>>> .1 
0.23507189750671387 
>>> .1 
0.0 
>>> .1 
-1073741823.0 
>>> .1 
-1073741823.0 
>>> .1 
-1073741823.0 
>>> 

Es gibt die gleiche Leistung für 0.1, 0.5, 5.1, 0.0, etc .. Die ganzen Zahlen sind hallen richtig an mich zurück, aber alles mit einem Komma gibt mir die verrückten Zahlen.

Dies ist eine Python-Binärdatei kompiliert für ARM, installiert über Optware auf einer Synology DiskStation 101j.

Hat jemand schon einmal so etwas gesehen?

+0

Ich habe es vorher nicht gesehen, in der Tat ist es wierd! – Mohamed

+0

sehr gefragt! Wie ist es passiert? – Xolve

+0

Überprüfen Sie die Homepage von Optware. Ich habe dort einen Artikel über Perl Probleme mit fp lib gefunden. – zxcat

Antwort

8

Vielleicht ist es für die falsche VFP Version kompiliert.

Oder Ihr ARM hat kein VFP und muss stattdessen Software-Emulation verwenden, aber die Python-Binärdatei versucht, Hardware zu verwenden.


EDIT

Ihre DS-101j bauen auf FW IXP420 BB cpu, das ist Intel XScale (armv5b) (link). Es hat keine Hardware-Gleitkommaunterstützung. Und "b" in armv5b steht für Big Endian. Einige Leute haben Build-Probleme, weil gcc standardmäßig Little-Endian-Code generiert. Vielleicht ist das das Problem Ihrer Software FP lib. Überprüfen Sie this search für weitere Informationen.

0

Wie von zxcat gesagt, klingt das so, als ob Sie auf einem ARM ohne Hardware-Fließkomma-Punkt und einer gesprengten Soft-Float-Bibliothek laufen. Eine schnelle Suche ergab nicht, welche ARM-Variante in der DS101j ist; Weiß jemand?

+0

Weiß nicht, aber ich würde nicht erwarten, eine Hardware-FP auf einer NAS-Box zu sehen. – bobince

+3

Wenn Sie nur eine Lösung kommentieren möchten, fügen Sie einen Kommentar statt einer neuen Lösung hinzu. –

Verwandte Themen