判断两个浮点结果是否足够接近,需要先定义允许多大的误差。math.isclose同时提供相对容差和绝对容差,尤其在与零比较时,不能只依赖相对比例。

相对容差取决于数值尺度
相对容差允许的差异随比较值的大小变化,绝对容差则给出固定下限。默认绝对容差为零,因此一个很小的非零数与零比较,也可能返回False;这不是函数失效,而是当前规则没有允许这段差距。
容差应来自业务要求
下面用1e-8演示允许的绝对差异,不是建议所有项目采用这个值。若测量单位、误差来源或验收标准不同,需要重新选择。金额等要求精确十进制规则的场景,应先选对数值表示,不能单靠放宽比较掩盖问题。
同时测试通过与拒绝
示例检查普通计算误差、接近零和明显超界三类输入。NaN等特殊值还应按数据清理规则处理。比较接近只是一种判定,不会修改原数值,也不会让后续计算变成精确运算。
可以运行的练习
from math import isclose
assert isclose(0.1 + 0.2, 0.3)
assert not isclose(1e-10, 0.0)
assert isclose(1e-10, 0.0, abs_tol=1e-8)
assert not isclose(1e-5, 0.0, abs_tol=1e-8)
print("普通误差、零附近与超界检查通过")
示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。
资料与继续学习
Python:math.isclose。资料查阅日期:2026年10月4日。步骤与练习由本站整理。
资料查阅与编辑日期:2026年10月4日。作者:玖柒。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






