79

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

私が聞いたことがある

 inf = float('inf')

ポータブルではありません。ということで、次のようにすすめてもらいました。

 inf = 1e400

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

4

3 に答える 3

62

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

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

于 2010-05-27T09:11:28.670 に答える
16

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

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

于 2010-05-27T09:13:13.907 に答える
12

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

try:
    inf = float('inf')
except:  # check for a particular exception here?
    inf = 1e30000
于 2010-05-27T09:23:36.647 に答える