0.1 + 0.2 = 0.30000000000000004; 浮点型数据
理解:
1. 0.1 0.2在计算机语言中会转换为二进制语言
console.log(0.1.toString(2)); // "0.0001100110011001100110011001100110011001100110011001101"
console.log(0.2.toString(2)); // "0.001100110011001100110011001100110011001100110011001101"
2. 在计算 0.1 + 0.2 的时候会进行 二进制 =》十进制 的转换,此时会出现色入误差的情况,有一部分数据在精度上被丢失掉
0.1 => 0.0001100110011001 0.2 => 0.0011001100110011001 就会出现不等于0.3 的情况
解决:
1. console.log(parseFloat((0.1+0.2).toFixed(2))); // 0.3
2. console.log(( 0.1*100 + 0.2*100 ) / 100); // 0.3