var a = 0.1;
var b = 0.2;
console.log(a + b); // JS的浮点数存在精度问题
if (a + b == 0.3) {
console.log('你成功了吗');
}
// console.log(a+b);
这里a+b打印出来是0.30000000000000004.而不是0.3,这是js从出生就有的bug,是底层二进制转换出了问题,下面来康康3种解决方案
1.用乘除
// 解决方法1
console.log((a * 10 + b * 10) / 10); // 0.3
2.用toFixed方法
// 解决方法2 保留小数位数 toFixed(2):保留两位小数
console.log((a + b).toFixed(2));
3.用数学公式
// 解决方法3 数学公式
console.log(Math.floor(a + b)); // 向下取整
console.log(Math.ceil(a + b)); // 向上取整
console.log(Math.round(a + b)); // 四舍五入