JS是弱类型语言,不区分float 和 double,浮点计算是不精确计算,所以会产生很多小数,不同时间的小数结果还很可能不一样。所以一般都要取精确度。当然,你所提供数据的计算结果小数位范围内是不会出错的,只是在那之后的小数位会有问题。
let totalVolume =0;
totalVolume +=parseFloat(item.value);
当 item.value=0.1,循环相加十次后,totalVolume会得出0.99999999999的结果。
如果要避免这种BUG出现,使用以下方式:
let totalVolume =0;
totalVolume +=parseFloat(item.value);
totalVolume.toFixed(1)//保留一位小数
修改后得出的结果是1.0。
用toFixed(1)方法可以保留1位小数,具体保留小数位按需修改。