2

Python で非常に大きな数を使用する予定ですが、Python で非常に大きな数を処理できるかどうか疑問に思っています。数字には最大 3,000 個のゼロが含まれます。

また、3,000 個のゼロを含む 1 は何バイトを使用するのでしょうか?

3 番目の質問、str() を使用せずに Python で数値を整数としてファイルに保存するにはどうすればよいですか?

4

2 に答える 2

8

Python は型を使用して任意の長さの整数を格納でき、リテラルに an を追加しlongて指定することもできます(たとえば、 is は単にanではなく 0 です)。さらに良いことに、計算の結果が大きすぎて で表すことができない場合、数値をs から sに自動的に「昇格」します。本格的な数値型であり、すべての Python 数値演算と互換性があります。longL0Llong0intintlongintlong

整数以上が必要な場合は、バイナリ浮動小数点表現に固有の問題なしに、任意のサイズと精度の実数を提供decimalする型を特徴とするモジュールが必要です。Decimal

longとの両方の欠点は、後者がネイティブ ハードウェア サポートを持っているため、それぞれとDecimalより遅いことです。しかし、大きな数で計算を行うことは、そのような数をまったく使用できないことよりもやや遅くなります。intfloat

サイズに関しては、intオブジェクトは 32 ビット Python で 12 バイトです。内部的には 32 ビットの量のこの一見大きなサイズは、Python の「すべてがオブジェクト」アプローチによるものです。(引用はしませんが、値には 4 バイト、インスタンスから型へのポインターには 4 バイト、参照カウンターには 4 バイトがあり、オブジェクトがいつガベージになるかを判断するために使用されます。 -collected. これらのフィールドは、Python の 64 ビット バージョンでは大きくなる可能性があります。)

のサイズはlong、数値 (およびオブジェクトのオーバーヘッド) に基づいて変化するため、さまざまですが、任意のlong値のサイズは を使用して決定できますsys.getsizeof()

于 2012-04-05T22:22:38.803 に答える
4

大きな数を作る:

x = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

そして、それが何バイトかを見てください:

print sys.getsizeof(x)

str() なしでファイルに書き込みます。

fd = open("file.txt", "wb")
fd.write("%u" %x)
fd.close()
于 2012-04-05T22:22:21.977 に答える