Number.EPSILON
借助该属性解决浮点数计算产生的精度问题
1. 精确比较浮点数
function isEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
console.log(isEqual(0.1 + 0.2, 0.3)); // true2. 浮点数运算的封装
function addFloats(a, b) {
const sum = a + b;
// 如果结果与预期值的误差小于 Number.EPSILON,则返回预期值
if (Math.abs(sum - (a + b)) < Number.EPSILON) {
return a + b;
}
return sum;
}
console.log(addFloats(0.1, 0.2)); // 0.300000000000000043. 浮点数运算的修正
4. 通用浮点数运算工具
5. 结合 toFixed() 和 Number.EPSILON
toFixed() 和 Number.EPSILON总结
最后更新于