如和判断两个浮点数是否相等

Posted BillYu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如和判断两个浮点数是否相等相关的知识,希望对你有一定的参考价值。

在chrome console输入console.log(0.7 + 0.1),你猜会得到什么结果?会输出0.7999999999999999,所以如果你进行这样的判断console.log(0.7 + 0.1 === 0.8),那么结果并不能如愿,会输出 false。

 

为什么会这样呢?引用知乎里面的一段回答:

主要问题是,你用十进制去想,0.7 是一个能准确表示的小数,而二进制却是循环小数。反过来想,就好像在三进制中 0.2 是一个很准确的数字,但在十进制中却是循环小数, 。除非用有理数表示,这些数字不能精确地用有限位的二进制表示,产生误差,0.7+0.1计算的结果也是有误差。把有误差的结果显示时,转换成十进位显示的算法发现该值与 0.8 相比,较接近 0.7999999999999999,所以显示后者。

 

那么怎样评断(0.7 + 0.1)与0.8是否相等呢?

 

我的想法是作差,差值的绝对值与一个很小的数对比(比如1e-7),如果差值小于此数,那么可以认为是相等的。

以上是关于如和判断两个浮点数是否相等的主要内容,如果未能解决你的问题,请参考以下文章

1203 判断浮点数是否相等

golang比较浮点数是不是相等

浮点数比较

Java浮点数相等性的判断

浮点数比较

codevs-1203