为什么浮点数不能直接比大小呢?
简单的来说就是计算机里面的数字是由二进制保存的,在计算机内部有些数字不能准确的保存,于是就保存一个最靠近的数字。
在十进制中也会存在这样的问题,数字不能准确地表示像1/3这样的数字,所以你必须舍入到0.33之类的东西 - 你不要指望0.33 + 0.33 + 0.33加起来就是1。
因此我们在比较两个float是否相等时,不能仅仅依靠 == 来进行判断,而是当他们两者的差小于一个我们可以容忍的小值时,就可以认为他们就是相等的。
那么Python是如何解决的呢?
第一种方法:
直接相加减,可选择不同的误差精度,得到不同的结果。
return abs(f1 - f2) <= allowed_error
第二种方法:
使用math.isclose方法,传入需要比较的两个数和可以接受的精度差值即可。