web-dev-qa-db-ja.com

Pythonで無限数を表現するにはどうすればいいですか?

Pythonで無限数を表現するにはどうすればいいですか?プログラムにどの数値を入力しても、この無限大の表現を超えないようにしてください。

452
ssierral

Pythonでは、次のことができます。

test = float("inf")

Python 3.5では、次のことができます。

import math
test = math.inf

その後:

test > 1
test > 10000
test > x

常に本当でしょう。もちろん、指摘されているように、xは無限大または "nan"( "not a number")でもない限り。

さらに(Python 2.xのみ)、Ellipsisと比較すると、float(inf)は少なくなります。例えば:

float('inf') < Ellipsis

trueを返します。

569
WilHall

Python 3.5からはmath.infを使うことができます。

>>> import math
>>> math.inf
inf
54
rightfold

私はあなたが何をしているのか正確には分かりませんが、float("inf")はあなたにfloat Infinityを与えます、それは他のどの数値よりも大きいです。

30
Ned Batchelder

もう1つの、それほど便利ではない方法は、 Decimal classを使用することです。

from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
22

負の無限大については誰も明示的に言及していないようであるので、私はそれを追加すべきだと思います。

正の無限大の場合(完全性のためだけに):

math.inf

負の無限大の場合:

-math.inf
19

NumPyライブラリには無限大があります:from numpy import inf。負の無限大を得るためには-infと書くだけです。

18
Lenar Hoyt

Python2.xには、この目的を果たすダーティーなハックがありました(絶対に必要でない限り絶対に使わないでください):

None < any integer < any string

したがって、チェックi < ''は任意の整数Trueに対してiを保持します。

それはpython3で合理的に廃止されました。今そのような比較はに終わる

TypeError: unorderable types: str() < int()
11

また、sympyを使用する場合、sympy.ooを使用できます。

>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan

等.

0
Victor