2009-09-03 8 views
10

Co może być przyczyną tego dziwnego zachowania python?Dziwne zachowanie python na komputerze z procesorem ARM

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 
>>> 

To daje taki sam efekt dla 0.1, 0.5, 5.1, 0.0, etc .. Liczby są echem na mnie poprawnie, ale nic z przecinkiem daje mi szalone liczby.

To jest binarnie python skompilowany dla ARM, zainstalowany przez Optware na stacji Synology DiskStation 101j.

Czy ktoś widział coś takiego wcześniej?

+0

Nie widziałem tego wcześniej, w rzeczywistości jest dziwne! – Mohamed

+0

bardzo wiered! jak to się dzieje? – Xolve

+0

Sprawdź stronę domową Optware. Znalazłem tam artykuł o kłopotach z Perlem z fp lib. – zxcat

Odpowiedz

8

Może jest skompilowany dla niewłaściwej wersji VFP.

Albo twój ARM nie ma VFP i musi używać emulacji oprogramowania zamiast, ale binarny python próbuje użyć sprzętu.


EDIT

Twój DS-101j build na FW IXP420 BB procesora, który jest Intel XScale (armv5b) (link). Nie ma sprzętowej obsługi zmiennoprzecinkowej. A "b" w armv5b oznacza Big Endian. Niektóre osoby mają problemy z budowaniem, ponieważ gcc domyślnie generuje mały kod endian. Może to jest problem twojej biblioteki FP oprogramowania. Aby uzyskać więcej informacji, sprawdź numer this search.

0

Jak powiedział zxcat, wygląda na to, że korzystasz z ARM bez punktu zmiennoprzecinkowego i biblioteki z miękkim ułamkiem. Szybkie wyszukiwanie nie pokazało, jaki wariant ARM znajduje się w DS101j; ktoś wie?

+0

Nie wiem, ale na pewno nie spodziewałbym się zobaczyć sprzętowego FP na pudełku NAS. – bobince

+3

Jeśli chcesz tylko komentować rozwiązanie, dodaj komentarz, a nie nowe rozwiązanie. –