我计划在Python中使用非常大的数字,但不知道Python是否可以处理非常大的数字。这些数字最多会有3,000个零。
还有,有3,000个零的1使用了多少字节?
第三个问题,如何使用Python将数字作为整数保存到文件中,而不必使用str()?
发布于 2012-04-06 06:22:39
Python可以使用long类型存储任意长的整数,甚至允许您通过将L附加到long文字来指定它们(例如,0L是long零,而不仅仅是0是int)。更妙的是,当计算结果太大而无法用int表示时,它会自动将数字从longs“提升”到int s。long是一种成熟的数值类型,与所有Python数值操作兼容。
如果您需要的不仅仅是整数,那么您需要decimal模块,它的Decimal类型可以提供任意大小和精度的实数,而不会出现二进制浮点表示固有的问题。
long和Decimal的缺点是它们分别比int和float慢,因为后者有本机硬件支持。但在大数字上做数学运算有点慢,总比根本不能使用这样的数字要好。
至于大小,在32位int中,Python对象是12个字节。对于内部的32位数量来说,这种看似很大的大小是由于Python的“一切都是对象”方法造成的。(我相信,但不要引用我的话,值有4个字节,从实例到类型的指针有4个字节,引用计数器有4个字节,它用于确定何时可以对对象进行垃圾收集。在64位版本的Python上,这些字段可能更大。)
long的大小因数量(加上对象开销)而异,但任何long值的大小都可以使用sys.getsizeof()来确定。
发布于 2012-04-06 06:22:22
做一个大数字:
x = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000看看它有多少字节:
print sys.getsizeof(x)将其写入不带str()的文件:
fd = open("file.txt", "wb")
fd.write("%u" %x)
fd.close()https://stackoverflow.com/questions/10036751
复制相似问题