如何避免除以零错误:里程占比计算总距离为0时的兼容方案
除零错误兼容实现方案
之前试过的两类规避方式都存在明显的逻辑问题:
- 给分母固定+1的处理会系统性拉低所有占比计算结果,小里程统计场景下误差会非常大,完全丧失统计准确性
- 总距离为0时强制把
total_distance赋值为1的判断逻辑,会导致总距离为0的场景下,计算结果直接等于高速里程的原始值,根本达不到“总距离为0时直接输出0”的预期
以下是两个无计算偏差、能保证脚本持续稳定运行的实现方案:
- 内联条件判断方案:最简洁直接,完全匹配需求
用三元表达式在赋值时直接做判断,总距离非0时按真实值计算占比,总距离为0时直接赋值0,全程不篡改原始统计变量的值,不会引入计算偏差:
highway_perc = total_highway_distance / total_distance if total_distance != 0 else 0
- 异常捕获方案:适配长期运行的健壮性需求
直接捕获除零异常,不需要提前预判总距离的取值状态,哪怕后续因为浮点精度偏移、数据缺测等意外场景触发0值计算,也不会中断脚本运行,适合需要持续稳定跑批的场景:
try: highway_perc = total_highway_distance / total_distance except ZeroDivisionError: highway_perc = 0
你之前写的判断逻辑没达到预期,核心原因是分支执行后没有同步修正计算结果,只是修改了分母的值,相当于用错误的分母继续做除法,自然得不到想要的输出。
内容的提问来源于stack exchange,提问作者graukas
相关产品推荐
相关产品推荐

