console.log(0.1+0.2);//0.30000000000000004
在js中0.1+0.2的结果不等于0.3,这是由于精度缺失造成的,JS数字采用IEEE 754 双精度 64 位浮点数来存储,在js中数字只能保存小数点后52位,第53位为0省略,为1进1,0.1的二进制加0.2的二进制的和第53位是1,向前进1,后面的省略,所以转换成十进制不等于0.3
实际得到的0.2的二进制加0.3的二进制的结果为
0.0100110011001100110011001100110011001100110011001101
let str4 = '0100110011001100110011001100110011001100110011001101'
console.log('二进制和的之际结果为 ' + str4.length);//52
转换为是进制是0.30000000000000004
JavaScript中的0.1+0.2不等于0.3,这是由于浮点数精度缺失,JS使用IEEE 754双精度64位标准,只能精确存储小数点后52位。在进行0.1和0.2相加时,二进制运算导致第53位进位,因此转换回十进制时不等于0.3。
1616

被折叠的 条评论
为什么被折叠?



