将float("inf")移植到Python 2.4和2.5

3 投票
5 回答
2070 浏览
提问于 2025-04-15 14:58

我正在把我的项目从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

撰写回答