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