Javascript浮点数比较大小

今天在修改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定得更小就行了。

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据