Python で非常に大きな数を使用する予定ですが、Python で非常に大きな数を処理できるかどうか疑問に思っています。数字には最大 3,000 個のゼロが含まれます。
また、3,000 個のゼロを含む 1 は何バイトを使用するのでしょうか?
3 番目の質問、str() を使用せずに Python で数値を整数としてファイルに保存するにはどうすればよいですか?
Python で非常に大きな数を使用する予定ですが、Python で非常に大きな数を処理できるかどうか疑問に思っています。数字には最大 3,000 個のゼロが含まれます。
また、3,000 個のゼロを含む 1 は何バイトを使用するのでしょうか?
3 番目の質問、str() を使用せずに Python で数値を整数としてファイルに保存するにはどうすればよいですか?
Python は型を使用して任意の長さの整数を格納でき、リテラルに an を追加しlong
て指定することもできます(たとえば、 is は単にanではなく 0 です)。さらに良いことに、計算の結果が大きすぎて で表すことができない場合、数値をs から sに自動的に「昇格」します。本格的な数値型であり、すべての Python 数値演算と互換性があります。long
L
0L
long
0
int
int
long
int
long
整数以上が必要な場合は、バイナリ浮動小数点表現に固有の問題なしに、任意のサイズと精度の実数を提供decimal
する型を特徴とするモジュールが必要です。Decimal
long
との両方の欠点は、後者がネイティブ ハードウェア サポートを持っているため、それぞれとDecimal
より遅いことです。しかし、大きな数で計算を行うことは、そのような数をまったく使用できないことよりもやや遅くなります。int
float
サイズに関しては、int
オブジェクトは 32 ビット Python で 12 バイトです。内部的には 32 ビットの量のこの一見大きなサイズは、Python の「すべてがオブジェクト」アプローチによるものです。(引用はしませんが、値には 4 バイト、インスタンスから型へのポインターには 4 バイト、参照カウンターには 4 バイトがあり、オブジェクトがいつガベージになるかを判断するために使用されます。 -collected. これらのフィールドは、Python の 64 ビット バージョンでは大きくなる可能性があります。)
のサイズはlong
、数値 (およびオブジェクトのオーバーヘッド) に基づいて変化するため、さまざまですが、任意のlong
値のサイズは を使用して決定できますsys.getsizeof()
。
大きな数を作る:
x = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
そして、それが何バイトかを見てください:
print sys.getsizeof(x)
str() なしでファイルに書き込みます。
fd = open("file.txt", "wb")
fd.write("%u" %x)
fd.close()