我正在将我的项目从Python 2.6移植到Python 2.4和2.5。在我的项目中,我使用了float("inf")
,现在我发现它在Python 2.5上不可用。它有一个后端吗?
答案 0 :(得分:5)
对我来说,无论是漫长的还是短路都可以解决它:
$ 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
,但它确实注意到这很难看并且不能保证是可移植的。
答案 1 :(得分:2)
你应该能够通过给Python一个足够大的浮点常数来伪造它。例如:
>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True
答案 2 :(得分:1)
decimal模块自Python 2.4起可用,并支持正或负无限小数。它并不总是像浮点数一样(例如,添加小数和浮点数不支持)但是做正确的比较,这对我来说已经足够了。
>>> decimal.Decimal('Infinity') > 1e300
True
答案 3 :(得分:0)
我创建了一个在Python 2.5+上测试的backport,很可能很容易在Python 2.4上工作:
https://github.com/cool-RR/GarlicSim/blob/master/garlicsim/garlicsim/general_misc/infinity.py
答案 4 :(得分:0)