在Python中存储超过9,000位的大数字

时间:2012-04-05 22:14:54

标签: python file integer long-integer

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

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

第三个问题,如何将一个数字作为整数保存到Python文件中,而不必使用str()呢?

2 个答案:

答案 0 :(得分:7)

Python可以使用long类型存储任意长整数,甚至可以通过向long附加L来指定0L文字(例如long是{{1}零,而不是仅仅0的{​​{1}}。更好的是,当计算结果太大而无法用int表示时,它会自动“提升”int s到long s的数字。 int是一个成熟的数字类型,与所有Python数值运算兼容。

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

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

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

int的大小会有所不同,因为它们会根据数量(加上对象开销)而有所不同,但可以使用long确定任何long值的大小。

答案 1 :(得分:4)

大个数字:

x = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

看看它有多少字节:

print sys.getsizeof(x)

将其写入不带str()的文件:

fd = open("file.txt", "wb")
fd.write("%u" %x)
fd.close()