Chuck_阿斌很强 2021-04-30 14:05 采纳率: 100%
浏览 4605
已采纳

ZeroDivisionError: float division by zero问题

在做优化算法时,某些自适应参数会根据代价函数的大小确定。代价函数大的时候是一个很大的数,小的时候是一个无限接近零的数,此时代价函数值处于被除数的位置,当太小时,python报错ZeroDivisionError: float division by zero,请问怎么能够很好地解决,希望老师们能给出建议和解决措施。

  • 写回答

5条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2021-04-30 14:33
    关注

    测试了一下,Python解释器认为1/1e-308是最大的浮点数,1/1e-309就是无穷大了,1/1e-323还是无穷大,但是1/1e-324就溢出,1e-100/1e-324也照样溢出,因此可以认为1e-324被解释器视为0。建议将1e-323作为阈值,小于该阈值时,就避开除法操作。

    >>> 1/1e-308
    1e+308
    >>> 1/1e-309
    inf
    >>> 1/1e-323
    inf
    >>> 1/1e-324
    Traceback (most recent call last):
      File "<pyshell#76>", line 1, in <module>
        1/1e-324
    ZeroDivisionError: float division by zero
    >>> 1e-100/1e-324
    Traceback (most recent call last):
      File "<pyshell#77>", line 1, in <module>
        1e-100/1e-324
    ZeroDivisionError: float division by zero
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器