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