2011-01-03 10 views
63

Pythonでは、使用できる最大の整数を得る方法はありますか? INT_MAXのようなあらかじめ定義された定数がありますか?Pythonの整数範囲

答えて

114

Pythonには任意の精度整数があり、真の固定最大値はありません。あなたは利用可能なメモリによってのみ制限されます。

Python 2には、intlongの2種類があります。 intはCタイプを使用し、longは任意の精度です。 sys.maxintを使用して、最大でintを見つけることができます。

sys.maxint + 1 

が正常に動作してlongを返します:あなたは通常、それを心配する必要はありません。しかしint sが自動的に、longに昇格されています。 intlongが単一任意精度int種類に統一したので

sys.maxint

も、パイソン3に存在しません。

+26

Python 3(およびPython 2.6以降)では、任意に大きな値が必要な場合に 'sys.maxsize'を使用できます。 – mattdm

+0

には長いものがありますか? –

+0

'sys.maxsize'は、Python 2と3のコンテナのサイズの理論上の制限になり続けます(理論的にはメモリが本当の制限要因なので) –

0
import re 
import sys 
import platform 
import struct 

formats = { 
      "int":{"p_type":"integer", "format":"i"}, 
      "float":{"p_type":"float", "format":"f"}, 
      "double":{"p_type":"float", "format":"d"} 
      }  

sys_bit = int(re.findall(r"\d+", platform.architecture()[0])[0])/8 
for k,v in formats.iteritems(): 
    print "max {0} {1}".format(k, 2**struct.Struct(v["format"]).size*sys_bit-1)-1) 
    print "min {0} {1}".format(k, -2**struct.Struct(v["format"]).size*sys_bit-1))