在做js浮点型数值计算的时候,出现的了数据计算不准确的原因:
在有限的存储空间下,绝大部分的十进制小数都不能用二进制浮点数来精确表示。例如,0.1 这个简单的十进制小数就不能用二进制浮点数来表示。
console.log( 1 - 0.8 ); //输出 0.19999999999999996
console.log( 6 * 0.7 ); //输出 4.199999999999999解决方案 :将浮点数乘以(扩大)10的n次方倍,把浮点数变为整数后再进行相应的运算,最后将得到的结果除以(缩小)10的n次方倍。
console.log( (1*10 - 0.8*10)/10 ); //输出 0.2
console.log( 6 * 0.7*10/10 ); //输出 4.2