1.最小精度
Number.EPSILON是JS中表示的最小精度,接近于2.220446049250313e-16
<script>
console.log(Number.EPSILON);//2.220446049250313e-16
</script>
在JS中当当个值的差值的绝对值小于等于这个最小精度,则可以把它们看成是相等的。
因此我们可以解决如下问题:
因为在JS中,浮点数是使用64位固定长度来表示的,其中的1位表示符号位,11位用来表示指数位,剩下的52位尾数位,由于只有52位表示尾数位。
由于0.1和0.2在转换成二进制时是无限循环数,由于只有52位尾数位,这就造成了截取的时候存在精度缺失,相加后等于如下
<script>
console.log(0.1 + 0.2);
</script>
所以0.1+0.2造成了不等于0.3
console.log(0.1 + 0.2 === 0.3);
但是这并不符合我们常规,我们就可以通过Number.EPSILON最小精度解决。
<script>
function equal(left