面试的时候,毫无防备的被问到python里面怎么比较两个float数怎么判断相等,当时粗略的回答了说:“先扩大倍数,然后再做差进行比较”。事后想了想还是没有回答到点子上,重新学习总结记录
1.做差取绝对值,看差值是否在给定的精度范围内,是则认为相等;否则,不相等
即
abs(f1-f2) <= allowed_rate
2.python3.5以上版本,使用math.isclose()方法
#举个例子
>>f1 = 3.0
>>f2 = 3.000001
#通常在工程项目中,f1应该等不等于f2,需要考虑到我们所需要的精度要求
>>import math
>>math.isclose(f1,f2,rel_tol = 0.1)
>>>True
>>math.isclose(f1,f2,rel_tol = 0.000000001)
>>False