当前位置: 首页 > 面试题库 >

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

宋宏毅
2023-03-14
问题内容

我有一个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...


 类似资料:
  •   Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。   Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。   Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。

  •   上下文管理器用于资源管理。它们允许你在需要时分配和释放资源。上下文管理器最常用和最受认可的例子是 with 语句。 它主要用于打开和关闭文件。with 允许在单行出现问题时打开和关闭文件。 它的主要优点是它可以确保文件正确关闭。 with open ('./data.txt','w') as f:     f.write("Hello")

  • 问题内容: 我想知道Swift如何在内部管理数组?Apple的语言指南仅处理用法,而未详细说明内部结构。 作为一名Java开发人员,我习惯于将“裸”数组视为一种非常静态和固定的数据结构。我知道这在Swift中是不正确的。除了Java之外,在Swift中,您可以更改数组的长度,还可以执行插入和删除操作。在Java中,我习惯于根据要对该结构执行的操作来决定要使用哪种数据结构(简单数组,ArrayLis

  • 问题内容: 我一直在考虑使用Python进行快速手牌评估。在我看来,加快处理速度的一种方法是将所有牌面和西服表示为质数,然后将它们相乘以表示手: 和 这将为每只手提供一个数值,通过模可以告诉我手中有多少个国王或有多少个心。例如,任何有五个或更多球杆的手都会平均除以;任何有四位国王的手将平均除以,依此类推。 问题在于,像这样的七张牌手的散列值约为62.7万亿次,这将需要超过32位才能在内部进行表示。

  • 问题内容: 建议处理本地开发和生产服务器设置的建议方式是什么?它们中的某些(例如常量等)可以在两者中进行更改/访问,但是其中一些(例如静态文件的路径)需要保持不同,因此,每次部署新代码时都不应覆盖它们。 当前,我将所有常量添加到中。但是每次我在本地更改某些常量时,都必须将其复制到生产服务器并编辑文件以进行生产特定更改… :( 编辑:这个问题似乎没有标准答案,我已经接受了最受欢迎的方法。 问题答案:

  • 问题内容: 我正在尝试从网站获取一些数据。然而,这又使我回来了。我试图获取的数据是大量的嵌套链接。我在线进行了一些研究,发现这可能是由于服务器错误(在达到预期大小之前完成了分块的传输编码)。我还在此链接上找到了以上解决方法 但是,我不确定如何在我的案例中使用它。以下是我正在处理的代码 请帮助我。谢谢 问题答案: 您包含在问题中的链接只是执行urllib的read()函数的包装程序,该函数可以为您捕