将float("inf")移植到Python 2.4和2.5
我正在把我的项目从Python 2.6降级到Python 2.4和2.5。在我的项目中,我用了float("inf")
,但是现在发现Python 2.5里没有这个功能。请问有没有办法可以让它在2.5上用?
5 个回答
2
你可以通过给Python一个足够大的浮点数常量来“伪装”一下。比如说:
>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True
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
,但也指出这样做很丑陋,并且不一定能在所有环境中都能正常工作。
0
我做了一个回溯版本,已经在Python 2.5及以上的版本上测试过,可能也能很容易地让它在Python 2.4上运行:
https://github.com/cool-RR/GarlicSim/blob/master/garlicsim/garlicsim/general_misc/infinity.py