Pythonでは、使用できる最大の整数を得る方法はありますか? INT_MAXのようなあらかじめ定義された定数がありますか?Pythonの整数範囲
63
A
答えて
114
Pythonには任意の精度整数があり、真の固定最大値はありません。あなたは利用可能なメモリによってのみ制限されます。
Python 2には、int
とlong
の2種類があります。 int
はCタイプを使用し、long
は任意の精度です。 sys.maxint
を使用して、最大でint
を見つけることができます。
sys.maxint + 1
が正常に動作してlong
を返します:あなたは通常、それを心配する必要はありません。しかしint
sが自動的に、long
に昇格されています。 int
とlong
が単一任意精度int
種類に統一したので
sys.maxint
も、パイソン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))
関連する問題
Python 3(およびPython 2.6以降)では、任意に大きな値が必要な場合に 'sys.maxsize'を使用できます。 – mattdm
には長いものがありますか? –
'sys.maxsize'は、Python 2と3のコンテナのサイズの理論上の制限になり続けます(理論的にはメモリが本当の制限要因なので) –