1. ホーム
  2. python

[解決済み] Pythonで巨大な数の除算を管理する方法とは?

2022-02-12 01:40:46

質問

100桁の数字があり、その数字をすべてリストに入れて、演算できるようにしようとしています。これを行うために、次のコードを使用しています。

for x in range (0, 1000):
   list[x] = number % 10
   number = number / 10

しかし、私が直面している問題は、私は大きすぎる数float/integerのようなオーバーフローエラーを取得することです。私はさらに、次の代替手段を使用してみました。

number = int (number / 10)

この膨大な数の割り算を、浮動小数点数のない整数値で返すにはどうすればよいのでしょうか?

どのように解決するのですか?

Python 3 の場合。 number / 10 を返そうとします。 float . しかし、Pythonでは浮動小数点値を任意の大きさにすることはできず、もし number が大きい場合は OverflowError が発生します。

Python の浮動小数点値がシステム上で取ることのできる最大値は sys モジュールを使用します。

>>> import sys
>>> sys.float_info.max
1.7976931348623157e+308

この制限を回避するには、代わりに // を使えば、2つの整数の除算から整数を得ることができます。

number // 10

これは int のフロア値 number / 10 (floatを生成しない)。フロートとは異なり int の値は、Python 3では必要なだけ大きくすることができます(メモリの制限内で)。

これで大きな数字も割り切れるようになりました。例えば、Python 3では

>>> 2**3000 / 10
OverflowError: integer division result too large for a float

>>> 2**3000 // 10
123023192216111717693155881327...