首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中存储超过9,000位的大数

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

Stack Overflow用户
提问于 2012-04-06 06:14:54
回答 2查看 4.8K关注 0票数 1

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

还有,有3,000个零的1使用了多少字节?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-06 06:22:39

Python可以使用long类型存储任意长的整数,甚至允许您通过将L附加到long文字来指定它们(例如,0Llong零,而不仅仅是0int)。更妙的是,当计算结果太大而无法用int表示时,它会自动将数字从longs“提升”到int s。long是一种成熟的数值类型,与所有Python数值操作兼容。

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

longDecimal的缺点是它们分别比intfloat慢,因为后者有本机硬件支持。但在大数字上做数学运算有点慢,总比根本不能使用这样的数字要好。

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

long的大小因数量(加上对象开销)而异,但任何long值的大小都可以使用sys.getsizeof()来确定。

票数 7
EN

Stack Overflow用户

发布于 2012-04-06 06:22:22

做一个大数字:

代码语言:javascript
复制
x = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

看看它有多少字节:

代码语言:javascript
复制
print sys.getsizeof(x)

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

代码语言:javascript
复制
fd = open("file.txt", "wb")
fd.write("%u" %x)
fd.close()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10036751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档