js中如何判断两个浮点数是否相等

JavaScript013

js中如何判断两个浮点数是否相等,第1张

js中Number类型表示数字,采用“IEEE 754 标准定义的双精度64位格式”表示数字,不区分整数值和浮点数值,均采用浮点数值表示,所以在进行数字运算的时候要特别之一进度缺失问题。

js中0.1+0.2 == 0.3吗?

那么如何判断两个浮点数直接相等呢?

1、精度判断法

2、使用toFixed()方法

toFixed()方法可以把Number四舍五入为指定小数的数字。

语法

NumberObject.toFixed(num)//num代表要保留的小数位数。

但是toFixe存在不精准的问题:

解决方法:

重写toFixed()方法:

参考:

https://blog.csdn.net/undytk/article/details/88912386

https://blog.csdn.net/qq_33237207/article/details/81668457

正常的比较浮点数大小会出现偏差,因为精度的问题会导致 0.1+0.2 不等于 0.3 ,所以无法用 == 或者 === 做比较,可以采用下面的方式判断是否相等,判断差值是否小于最小精度值

var a = 0

var b = 0.00

if (parseFloat(a) == parseFloat(b) ) {

// 真的是等于0

}

参考上面的例子,使用parseFloat函数能够精确判断浮点数是不是0