2009-09-03 2 views
10

Что может вызвать это странное поведение на Python?Странное поведение python на машине с процессором 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 
>>> 

Это дает тот же результат для 0.1, 0.5, 5.1, 0.0 и т.д .. Целые отражаются обратно на меня правильно, но ничего с десятичной точкой дает мне сумасшедшие цифры.

Это двоичный код python, скомпилированный для ARM, установленный через Optware на Synology DiskStation 101j.

Кто-нибудь видел что-нибудь подобное раньше?

+0

Я не видел его раньше, действительно, это странно! – Mohamed

+0

очень взволнован! как это происходит? – Xolve

+0

Проверить домашнюю страницу. Я нашел там статью о проблемах с Perl с fp lib. – zxcat

ответ

8

Возможно, он составлен для неправильного VFP версии.

Или ваш ARM не имеет VFP и должен использовать эмуляцию программного обеспечения, но двоичный код python пытается использовать аппаратное обеспечение.


EDIT

Ваш DS-101J сборки на FW IXP420 BB центрального процессора, который Intel XScale (armv5b) (link). Он не поддерживает аппаратную поддержку с плавающей запятой. И «b» в armv5b означает Big Endian. У некоторых людей есть проблемы с построением, потому что gcc по умолчанию генерирует маленький код. Возможно, это проблема вашего программного обеспечения FP lib. Проверьте this search для получения дополнительной информации.

0

Как сказал zxcat, это похоже на то, что вы работаете на ARM без аппаратно-плавающей точки и с испорченной мягкой плавающей библиотекой. Быстрый поиск не показывал, какой вариант ARM находится в DS101j; Кто-нибудь знает?

+0

Не знаю, но я, конечно, не ожидал увидеть аппаратное FP на ящике NAS. – bobince

+3

Если вы просто хотите прокомментировать решение, добавьте комментарий, а не новое решение. –