原理:
    在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的。
    在JS中数字采用的IEEE 754的双精度标准进行存储(存储一个数值所使用的二进制位数比较多,精度更准确)

    在定点数中,如果我们以8位二进制来存储数字。
    对于整数来说,十进制的35会被存储为: 00100011 其代表 2^5 + 2^1 + 2^0。
    对于纯小数来说,十进制的0.375会被存储为: 0.011 其代表 1/2^2 + 1/2^3 = 1/4 + 1/8 = 0.375

    对于像0.1这样的数值用二进制表示你就会发现无法整除,最后算下来会是 0.000110011…由于存储空间有限,最后计算机会舍弃后面的数值,所以我们最后就只能得到一个近似值。
    在0.1 + 0.2这个式子中,0.1和0.2都是近似表示的,在他们相加的时候,两个近似值进行了计算,导致最后得到的值是0.30000000000000004

    解决办法:
    1、0.1+0.2 =>(0.110 + 0.210)/10
    2、parseFloat((0.1+0.2).toFixed(10)) ===0.3
    3、Math.abs(0.1+0.3-0.3) <= Number.EPSILON

    参考链接:
    https://blog.csdn.net/a8725585/article/details/83024787