Странное поведение python на машине с процессором ARM
Что может вызвать это странное поведение python?
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.
Кто-нибудь видел что-нибудь подобное раньше?
Ответы
Ответ 1
Возможно, он скомпилирован для неправильной версии VFP.
Или ваш ARM не имеет VFP и должен использовать эмуляцию программного обеспечения, но двоичный файл python пытается использовать аппаратное обеспечение.
ИЗМЕНИТЬ
Ваш DS-101j построен на FW IXP420 BB, который Intel XScale (armv5b) (ссылка). Он не поддерживает аппаратную поддержку с плавающей запятой. И "b" в armv5b означает Big Endian. У некоторых людей есть проблемы с построением, потому что gcc по умолчанию генерирует маленький код. Возможно, это проблема вашего программного обеспечения FP lib. Для получения дополнительной информации просмотрите этот поиск.
Ответ 2
Как сказал zxcat, это звучит так, как будто вы работаете на ARM без аппаратно-плавающей точки и с испорченной библиотекой soft-float. Быстрый поиск не показывал, какой вариант ARM находится в DS101j; кто-нибудь знает?