我打算在Python中使用非常大的数字,但想知道Python是否可以处理非常大的数字。这些数字最多可以有3,000个零。
并且,一个有3,000个零的1使用多少字节?
第三个问题,如何将一个数字作为整数保存到Python文件中,而不必使用str()呢?
答案 0 :(得分:7)
Python可以使用long
类型存储任意长整数,甚至可以通过向long
附加L
来指定0L
文字(例如long
是{{1}零,而不是仅仅0
的{{1}}。更好的是,当计算结果太大而无法用int
表示时,它会自动“提升”int
s到long
s的数字。 int
是一个成熟的数字类型,与所有Python数值运算兼容。
如果您需要的不仅仅是整数,那么您需要long
模块,该模块具有decimal
类型,提供任意大小和精度的实数,而不存在二进制浮点表示所固有的问题
Decimal
和long
的缺点是它们分别比Decimal
和int
慢,因为后者具有本机硬件支持。但是对大数字进行数学运算有点慢,但根本无法使用这些数字。
对于大小,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()