JavaScript 中 0.1 + 0.2 != 0.3,是因为在计算过程中涉及到小数转二进制的问题。大部分十进制小数无法完全转换为二进制,也就是存在精度误差,因此可能会出现计算结果与预期结果不完全相等的情况。解决这个问题可以有以下几种方式:
toFixed() 方法可以将小数保留指定位数,并返回一个字符串类型的数值。因为是字符串类型,所以可以直接比较大小,不会存在精度误差的问题。示例如下:
let sum = 0.1 + 0.2;
let expectedSum = 0.3;
if (sum.toFixed(1) == expectedSum.toFixed(1)) {
console.log("等于");
} else {
console.log("不等于");
}
输出结果为等于。
使用 Math.round() 方法可以将小数四舍五入成整数,避免了精度误差问题。示例如下:
let sum = 0.1 + 0.2;
let expectedSum = 0.3;
if (Math.round(sum * 10) == Math.round(expectedSum * 10)) {
console.log("等于");
} else {
console.log("不等于");
}
输出结果为等于。
综上所述,以上两种方法都可以解决 JavaScript 中小数计算精度误差的问题。
本文链接:http://task.lmcjl.com/news/9587.html