Javascript 浮点运算的问题分析与解决方法 |
本文标签:Javascript,浮点运算 十进制 二进制 1.09999999999999999 输入 输出 复制代码 代码如下: (1.0-0.9).toFixed(digits) // toFixed() 精度参数须在 0 与20 之间 parseFloat((1.0-0.9).toFixed(10)) === 0.1 // 结果为True parseFloat((1.0-0.8).toFixed(10)) === 0.2 // 结果为True parseFloat((1.0-0.7).toFixed(10)) === 0.3 // 结果为True parseFloat((11.0-11.8).toFixed(10)) === -0.8 // 结果为True 方法提炼 复制代码 代码如下: // 通过isEqual工具方法判断数值是否相等 function isEqual(number1, number2, digits){ digits = digits == undefined? 10: digits; // 默认精度为10 return number1.toFixed(digits) === number2.toFixed(digits); } isEqual(1.0-0.7, 0.3); // return true // 原生扩展方式,更喜欢面向对象的风格 (1.0-0.7).isEqual(0.3); // return true |