Python3の整数int型に最大値はない(上限なし)

Python2の整数型にはintとlongの2つの型があったが、Python3のintはPython2のlongに相当し、最大値の上限がなくなりました。メモリの許す限り大きな値を扱うことができます。 ここでは以下の内容について説明します。

Python2の整数int型と長整数long型 Python3の整数int型

浮動小数点数float型の取りうる範囲(最大値・最小値)については

Python2の整数int型と長整数long型

Python2では通常の整数型のint型と長整数型のlong型があった。

  1. 組み込み型 - 数値型 int, float, long, complex — Python 2.7.15 ドキュメント

intの取りうる最大値はsys.maxintで取得できます。最小値(最大の負の数)は-sys.maxint-1となります。

28.1. sys.maxint --- システムパラメータと関数 — Python 2.7.15 ドキュメント

sys.maxintは最低でも231-1、64bit環境では263-1となります。 long型には最大値・最小値の制限はない。

Python3の整数int型

Python3のint型はPython2のlong型に相当し、最大値・最小値の制限はない。

整数の上限がなくなったため、sys.maxint 定数は削除されました。しかしながら、通常のリストや文字列の添え字よりも大きい整数として sys.maxsize を使うことができます。 sys.maxsize は実装の "自然な" 整数の大きさに一致し、同じプラットフォームでは (同じビルドオプションなら) 過去のリリースの sys.maxint と普通は同じです。 What's New In Python 3.0 - 整数 — Python 3.7.1rc1 ドキュメント

それに伴いsys.maxintは削除され、代わりにsys.maxsizeが追加されました。

sys.maxsize --- システムパラメータと関数 — Python 3.7.1rc1 ドキュメント

sys.maxsizeはPython2でのsys.maxintと同じく、32bit環境では231-1、64bit環境では263-1となります。

import sys

print(sys.maxsize)
# 9223372036854775807

print(type(sys.maxsize))
# <class 'int'>

print(sys.maxsize == 2**63 - 1)
# True

print(hex(sys.maxsize))
# 0x7fffffffffffffff

上の例で使っているhex()は整数値を16進数の文字列に変換する関数。

sys.maxsizeはint型の最大値(上限)ではなく、メモリの許す限りさらに大きな値を扱うことができます。

i = 10**100

print(i)
# 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

print(i > sys.maxsize)
# True

なお、浮動小数点数float型には無限大を表すinfがあり、比較した場合はint型のどの値よりも大きいとみなされます。

print(float('inf'))
# inf

print(i > float('inf'))
# False

無限大infについては

Last Updated: 6/26/2019, 10:34:03 PM