2

我打算在 Python 中使用非常大的数字,但想知道 Python 是否可以处理非常大的数字。这些数字将有多达 3,000 个零。

而且,带有 3,000 个零的 1 使用多少字节?

第三个问题,如何将数字作为整数保存到 Python 文件中,而无需 str() 它?

4

2 回答 2

8

Python 可以使用该类型存储任意长的整数long,甚至可以让您long通过附加 anL来指定文字(例如,0L是一个long零,而不是只是0一个int)。更好的是,当计算结果太大而无法用 表示时,它会自动将数字从ints 提升到s 。是一种成熟的数值类型,兼容所有 Python 数值运算。longintlong

如果您需要的不仅仅是整数,那么您需要该decimal模块,它具有一种Decimal类型,可提供任意大小和精度的实数,而没有二进制浮点表示所固有的问题。

long和的缺点Decimal是它们分别比int和慢float,因为后者具有本机硬件支持。但是,对大数进行数学运算要比根本无法使用这些数字要慢一些。

至于大小,int对象在 32 位 Python 中为 12 个字节。对于内部 32 位数量而言,这种看似大的大小是由于 Python 的“一切都是对象”方法。(我相信,但不要引用我的话,值有 4 个字节,从实例到类型的指针有 4 个字节,引用计数器有 4 个字节,用于确定对象何时可以是垃圾-collected。这些字段在 64 位版本的 Python 上可能更大。)

a 的大小会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 回答