2009-09-03 20 views
10

什麼可能導致這種奇怪的python行爲?帶ARM CPU的機器上的奇怪的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上安裝。

以前有沒有人見過類似的東西?

+0

我以前沒見過它,的確很奇怪! – Mohamed 2009-09-03 04:48:44

+0

非常威懾!它是如何發生的? – Xolve 2009-09-03 05:37:43

+0

檢查Optware主頁。我在那裏找到一篇關於fp lib的Perl麻煩的文章。 – zxcat 2009-09-04 06:09:48

回答

8

也許它是編譯了錯誤的VFP版本。

或者您的ARM沒有VFP,需要使用軟件仿真,但python二進制嘗試使用硬件。


編輯

FW IXP420 BB的CPU,這是英特爾XScale(armv5b)link)您的DS-101J的構建。它沒有硬件浮點支持。 armv5b中的「b」代表Big Endian。有些人有問題,因爲默認情況下,gcc會生成小端代碼。也許這是你的軟件FP lib的問題。查詢this search瞭解更多信息。

0

正如zxcat所說,這聽起來像是你正在ARM上運行,沒有硬件浮點和一個軟浮點庫。快速搜索沒有發現DS101j中的ARM變體;有人知道嗎?

+0

不知道,但我當然不希望在NAS盒子上看到硬件FP。 – bobince 2009-09-03 16:33:02

+3

如果您只想對解決方案發表評論,請添加評論,而不是新的解決方案。 – 2009-09-03 19:02:49