今天在修改bug的时候发现个关于2个浮点数之和和第3?数比较大小的问题,2个数之和通过人工计算的确和第3个数相等,但是js在判断的时候就变成不相等了,最后发现是2个浮点数相加后出现了精度缺失,正确的比较方式应该如下所示:
return?Math.abs((1*num3)?-?((1*num1)?+?(1*num2)))?<?0.01?true:false;
利用差值的绝对值的精度来判断:
具体就是:f1和f2是两个浮点数,precision是我们自己设置的精度,比如1e-6。
则可以用?fabs(f1-f2)<=precision?来判断f1和f2是否相等。
如果要求更高的精度,则把precision定得更小就行了。