ARM CPU 上奇怪的 Python 行为

10 投票
2 回答
1154 浏览
提问于 2025-04-15 14:02

是什么原因导致了这个奇怪的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,安装是在Synology DiskStation 101j上,通过Optware进行的。

有没有人见过类似的情况?

2 个回答

0

正如zxcat所说,这听起来像是你在一个没有硬件浮点运算的ARM处理器上运行,而且软浮点库也坏了。快速搜索了一下,没找到DS101j上用的是什么ARM型号;有没有人知道呢?

8

可能是因为编译的时候选错了 VFP 版本。

或者你的 ARM 设备没有 VFP,需要使用软件模拟,但 Python 的程序却试图使用硬件。


编辑

你的 DS-101j 是基于 FW IXP420 BB 这个 CPU,它是 Intel XScale (armv5b) 的一种型号 (链接)。这个型号不支持硬件浮点运算。而 "b" 在 armv5b 中表示大端字节序。有些人遇到了构建问题,因为 gcc 默认生成的是小端字节序的代码。也许这就是你软件浮点库的问题。你可以查看 这个搜索 获取更多信息。

撰写回答