js中如何使0.1+0.2=0.3

js中0.1+0.2不等于0.3的原因:浮点数转二进制后丢失了一些精度,再转十进制后就不为原来的值了。

1.ES6提供的Number.EPSILON方法, Number.EPSILON实际上是 JavaScript 能够表示的最小精度,等于 2 的-52 次方,误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。

    function numbersequal(a,b){ return Math.abs(a-b)<Number.EPSILON;
    } 
    var a=0.1+0.2, b=0.3;
    console.log(numbersequal(a,b)); //true

2.把计算数字 提升 10 的N次方 倍 再 除以 10的N次方。N>1.

    let a = (0.1 * 100 + 0.2 * 100) / 100
    let b = 0.3
    console.log(a === b);//true
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务