長整数の最大値


108

たとえばC ++のように、長整数の最大値を変数に割り当てるにはどうすればよいですかLONG_MAX


7
Pythonの整数がまったく制限されているかどうかはわかりません。sys.maxintを横切ると、内部表現がintからlongに変わります。
tchap

私は尋ねた私は、値のグループの中で最小値を見つける必要があるので、一つ一つだから、最初、私は他の人と比較できるように、変数に大きな値を格納する必要がある
Sreevisakh

2
あなたのコメントへ-組み込み関数minを使用することをお勧めします。
Jiri

5
C ++やその他の言語でプログラミングしている場合でも、最小値を見つけようとしているだけであれば、最大値は必要ありません。とにかくすべての要素をループする場合は、最初の要素を開始値として使用します。(しかしmin、もしあなたが本当にPythonでプログラムしたいなら、関数を使う方が良いです!)
John Y

3
@Sreevisakh:「大きな価値」については、無限大を使用しますfloat("inf")。または、組み込みmin関数を使用します。
Fred Foo

回答:


132

長整数:

明示的に定義された制限はありません。使用可能なアドレス空間の量は、実際的な制限になります。
このサイトから取得)。数値型のドキュメントを参照してくださいLong integers have unlimited precision。Python 2では、整数は制限を超えたときに自動的にlongに切り替わります。

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>


私たちが持っている整数について

maxintおよびmaxsize:

intの最大値は、Python 2.xとで見つかりsys.maxintます。Python 3で削除されましたsys.maxsizeが、多くの場合、代わりに使用できます。変更ログから:

整数の値に制限がなくなったため、sys.maxint定数が削除されました。ただし、sys.maxsizeは、実際のリストまたは文字列インデックスよりも大きい整数として使用できます。これは、実装の「自然な」整数サイズに準拠し、通常、同じプラットフォーム上の以前のリリースのsys.maxintと同じです(同じビルドオプションを想定)。

そして、違いに興味がある人のために(Python 2.x):

sys.maxint Pythonの通常の整数型でサポートされる最大の正の整数。これは少なくとも2 ** 31-1です。最大の負の整数は-maxint-1です。非対称性は、2の補数のバイナリ算術を使用した結果です。

sys.maxsizeプラットフォームのPy_ssize_t型でサポートされている最大の正の整数、つまり最大サイズのリスト、文字列、辞書、およびその他の多くのコンテナが持つことができる。

完全を期すために、Python 3のバージョンを次に示します。

sys.maxsize Py_ssize_t 型の変数がとることができる最大値を与える整数。通常、32ビットプラットフォームでは2 ^ 31-1、64ビットプラットフォームでは2 ^ 63-1です。

フロート:

そこだfloat("inf")float("-inf")。これらは他の数値型と比較できます:

>>> import sys
>>> float("inf") > sys.maxsize
True

私は同じコードを試してみましたが、Windows 64ビットマシンのPython 3では、intと表示されます。それの重要な理由。
ManojP 2015年

1
@ManojP Python 3では整数のサイズに制限がなくなったためです。最初のブロック引用を参照してください。この例がPython 2であることを明確にするために編集します
キーサー

39

Python longは任意に大きくできます。他のどの値よりも大きい値が必要な場合float('inf')は、Pythonを使用してさまざまな型の数値を比較するのに問題がないため、を使用できます。同様に、他のどの値よりも小さい値の場合は、を使用できますfloat('-inf')


1
それでそれは非常に大きな値を返しますか?
Sreevisakh

4
有限数よりも大きい浮動小数点の無限大を返します。
タイモン

4
私は言わなければならない、この答えは、OPのタイトルの質問への応答に関して、正解に間違いなく最も近いものです。つまり、「どのようにしてすべての入力よりも大きい(または少なくとも最大値よりも小さくない)Pythonセンチネル値を取得できますか?」ということです。だから私はこの答えに賛成していますが、OPがPythonで考えることを学ぶ方がいいと思います。
John Y

同意した。とはいえ、これが私が必要なことを行う唯一の方法である状況にありました。
タイモン

21

タイトルの質問への直接の回答:

整数のサイズは無制限で、Pythonでは最大値はありません。

述べられた根本的なユースケースに対処する回答:

あなたがやろうとしていることについてのあなたのコメントによると、あなたは現在、

minval = MAXINT;
for (i = 1; i < num_elems; i++)
    if a[i] < a[i-1]
        minval = a[i];

それはPythonでの考え方ではありません。Pythonへのより良い翻訳(しかし、まだ最高ではありません)は

minval = a[0]  # Just use the first value
for i in range(1, len(a)):
    minval = min(a[i], a[i - 1])

上記はMAXINTをまったく使用しないことに注意してください。ソリューションのその部分は、すべてのプログラミング言語に適用されます。コレクション内の最小値を見つけるためだけに、可能な最大値を知る必要はありません。

とにかく、Pythonで実際に行うことは

minval = min(a)

つまり、ループをまったく記述しません。組み込みmin()関数は、コレクション全体の最小値を取得します。


8

longPython 2.xの型は任意精度の演算を使用し、可能な最大値などはありません。使用可能なメモリによって制限されます。Python 3.xには、ネイティブマシンの整数では表現できない特別な型はありません。すべてがintあり、変換はバックグラウンドで処理されます。


7

PythonのC / C ++ Longとは異なり、精度は無制限です。詳細については 、Pythonの数値型のセクションを参照してくださいsys.maxint。整数の最大値を確認するには、参照するだけです。詳細については、sysのドキュメントを参照してください。


1

使用できます:floatの最大値は

float('inf')

負の

float('-inf')

2
タイトルは「長整数の最大値」であり、浮動小数点の最大値ではありません。したがって、これ質問にどのように答えるかの説明がなければ、私はこのNAAを考えます(答えではありません)。
Sнаđошƒаӽ

0

python3では、float値をint関数に送信して、その数値1.7976931348623157e + 308を整数表現で取得できます。

import sys    
int(sys.float_info.max)

これは何の役にも立ちません。それを説明するために、int(sys.float_info.max)+1を試してみてください。他のコメントで説明されているように、Pythonは無制限の精度の整数を格納するだけなので、もう1つ整数が得られます。
tialaramex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.