使用ARM CPU的机器上的奇怪python行为

时间:2009-09-03 02:59:58

标签: python floating-point 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.10.55.10.0等提供了相同的输出。整数正确地回显给我,但任何小数点都有给了我疯狂的数字。

这是为ARM编译的python二进制文件,通过Optware安装在Synology DiskStation 101j上。

以前有人见过这样的事吗?

2 个答案:

答案 0 :(得分:8)

也许它是针对错误的VFP版本编译的。

或者您的ARM没有VFP,而是需要使用软件仿真,但python二进制文件尝试使用硬件。


修改

您的DS-101j基于 FW IXP420 BB cpu, Intel XScale(armv5b)link)。它没有硬件浮点支持。 armv5b中的“b”代表Big Endian。有些人构建了问题,因为默认情况下gcc会生成一些小端代码。也许这就是你的软件FP lib的问题。查看this search了解详情。

答案 1 :(得分:0)

正如zxcat所说,这听起来像是在ARM上运行,没有硬件浮点和被破坏的软浮点库。快速搜索没有发现DS101j中的ARM变体;有人知道吗?