我將我的項目從Python 2.6移植到Python 2.4和2.5。在我的項目中,我使用了float("inf")
,現在我發現它在Python 2.5中不可用。它有回報嗎?將浮點數(「inf」)反向移植到Python 2.4和2.5中
回答
我創建了一個補丁包,對Python的2.5+測試,大概可以很容易地作出關於Python 2.4的工作:
https://github.com/cool-RR/GarlicSim/blob/master/garlicsim/garlicsim/general_misc/infinity.py
拼寫,要麼很長的路要走或短的路對我來說工作得很好:
$ python2.4 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('inf')+200"
inf
$ python2.5 -c "print float('infinity')+200"
inf
$ python2.4 -c "print float('infinity')+200"
inf
的-c
標誌的意思是「執行下面的參數作爲一個Python的命令。」
PEP754(已被拒絕)的確提到了有關特殊IEEE-754值的問題。它建議使用類似1e300000
的東西來產生浮點溢出並創建inf
,但它確實注意到這是醜陋的,並且不能保證是可移植的。
我不知道'-c'標誌是什麼,但在Windows XP上的Python 2.4中似乎沒有float('inf')',也沒有'float('infinity')'。它引發了:'ValueError:float():inf' – 2009-10-10 16:06:47
Python float使用硬件浮點數,所以行爲可能取決於平臺。有關更改,請參閱「添加了許多浮點功能。」 http://docs.python.org/whatsnew/2.6.html – u0b34a0f6ae 2009-10-10 16:18:08
適用於我在Linux上的python 2.4.3和osx python 2.5.6; win32平臺不遵循IEEE語義,或者你有一個非常古老的python版本。 – 2013-07-09 09:34:57
您應該可以通過給Python一個足夠大的浮點常量來代替它。例如:
>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True
的decimal模塊是因爲Python 2.4可用並支持正或負無窮大小數。它並不總是表現得像一個浮點數(例如,增加一個小數點和一個浮點數不被支持),但做比較是正確的,這對我來說已經足夠好了。
>>> decimal.Decimal('Infinity') > 1e300
True
- 1. 將Python移植到D:urllib
- 2. 反向移植CSRF_TRUSTED_ORIGINS到DJANGO 1.6
- 3. 將Python 3的「範圍」「反向移植」到Python 2是一個壞主意嗎?
- 4. 將JavaScript庫移植到Python
- 5. 將Ruby移植到Python
- 6. 麻煩移植python-2.7詛咒到python-2.4
- 7. 將Perl移植到Python
- 8. 將移植函數從Python移植到C++
- 9. 將Python-DocX函數移植到C#
- 10. 浮點二進制可移植性
- 11. 將Python 2 Unicode移植到Python 3
- 12. PV函數和將VB6移植到C#
- 13. 向下移動點在浮點數
- 14. 反向移植RTTI.TRttiIndexedProperty的德爾福XE
- 15. 將Python程序移植到C
- 16. 將PHP站點移植到Ruby on Rails
- 17. 可以將Flask(Python)移植到Lua嗎?
- 18. 通過ctypes將C庫移植到Python
- 19. PyMC + Theano Debian的反向移植
- 20. 將OpenGL代碼從C++移植到Python
- 21. 將此片段從Matlab移植到Python
- 22. 如何將Python程序移植到Ruby
- 23. 將應用程序移植到python 3
- 24. Paramiko將被移植到Python 3.x?
- 25. 將sched.h移植到Windows中
- 26. 從Java移植到Python
- 27. 將WPF移植到Cocoa(和/或反之亦然)
- 28. 是否可以添加從Python 2.5到2.4的函數?
- 29. 將python 2.6的版本更改爲python 2.5或2.4
- 30. 移植到Python 3問題
1e100000技巧在Windows XP上隨機失敗。它有時變成1.0。所以這是不可能的。 Infinity需要有一堂課。 – 2009-10-11 22:21:22