web-dev-qa-db-ja.com

pythonで浮動小数点無限リテラルを入力するにはどうすればよいですか

Pythonで浮動小数点無限リテラルを入力するにはどうすればよいですか?

私が聞いたことがある

 inf = float('inf')

非ポータブルです。したがって、以下を推奨しました。

 inf = 1e400

これらは標準ですか、それとも移植可能ですか?ベストプラクティスとは何ですか?

70
fmark

python 2.6 では、CPUがサポートしていれば移植可能です

Float()関数は、文字列nanをIEEE 754 Not A Number値に変換し、+ infおよび-infを正または負の無限大に変換します。これは、IEEE 754セマンティクスを備えたどのプラットフォームでも機能します。

60
Mark

float('inf')は、文字列出力がプラットフォーム間で異なる場合にPython 2.5に戻る)のように移植性がありません。2.6以降ではfloat('inf')の動作が保証されますIEEE-754準拠プラットフォーム(参照: http://www.python.org/dev/peps/pep-0754/ )。

(そして、推奨値は1e400だけでなく1e30000の範囲にあるようです。)

16
kennytm

おそらくあなたはこのようなことをすることができます

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000
11
John La Rooy