如何在Python中管理大数除法?

灵巧的

我有一个100位数的数字,我试图将该数字的所有数字放入列表中,以便可以对其进行操作。为此,我使用以下代码:

for x in range (0, 1000):
   list[x] = number % 10
   number = number / 10

但是我面临的问题是我遇到了溢出错误,例如浮点数/整数太大。我什至尝试使用以下替代方法

number = int (number / 10)

如何将这个巨大的数字除以整数类型的结果,即没有浮点数?

亚历克斯·赖利

在Python 3中,number / 10将尝试返回float但是,在Python中,浮点值的大小不能任意大,如果numberOverflowError则将引发。

您可以使用以下sys模块找到Python浮点值可以在您的系统上使用的最大值

>>> import sys
>>> sys.float_info.max
1.7976931348623157e+308

要解决此限制,请改用//从两个整数的除法中获取一个整数:

number // 10

这将返回的int底值number / 10(不产生浮点数)。与浮点数不同,int在Python 3中值可以根据需要的大小而定(在内存限制内)。

您现在可以将大数相除。例如,在Python 3中:

>>> 2**3000 / 10
OverflowError: integer division result too large for a float

>>> 2**3000 // 10
123023192216111717693155881327...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章