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

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条)

报告相同问题?