在做优化算法时,某些自适应参数会根据代价函数的大小确定。代价函数大的时候是一个很大的数,小的时候是一个无限接近零的数,此时代价函数值处于被除数的位置,当太小时,python报错ZeroDivisionError: float division by zero,请问怎么能够很好地解决,希望老师们能给出建议和解决措施。
5条回答 默认 最新
关注测试了一下,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本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 6无用