3

プロジェクトをPython2.6からPython2.4および2.5にバックポートしています。私のプロジェクトで使用float("inf")しましたが、Python2.5では使用できないことがわかりました。それのバックポートはありますか?

4

5 に答える 5

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が、これは醜く、移植性が保証されていないことに注意してください。

于 2009-10-10T15:52:12.480 に答える
2

代わりに、Pythonに十分に大きな浮動小数点定数を与えることで、それを偽造できるはずです。例えば:

>>> 1e100000
inf
>>> float('inf') == 1e1000000
True
>>> float('inf') == 2e1000000
True
于 2009-10-10T16:36:17.710 に答える
1

10進数モジュールはPython2.4以降で使用可能であり、正または負の無限小数をサポートします。常にfloatのように動作するわけではありませんが(たとえば、小数の追加やfloatはサポートされていません)、比較のために正しいことを行います。これは私にとっては十分でした。

>>> decimal.Decimal('Infinity') > 1e300
True
于 2011-02-27T04:20:46.807 に答える
0

Python 2.5以降でテストされたバックポートを作成しましたが、Python2.4で簡単に動作させることができます。

https://github.com/cool-RR/GarlicSim/blob/master/garlicsim/garlicsim/general_misc/infinity.py

于 2011-02-28T11:30:30.370 に答える
0

NumPyを数行借りる:

import numpy as np

inf = float(np.inf)

infこれは通常のPythonfloatなので、これ以上NumPyを気にする必要はありません。

于 2012-02-01T08:46:56.570 に答える