JS计算中出现无限小数位的情况

原因分析:

在开发中遇到了浮点数转换为百分数的问题,用浮点数乘以100结果产生了一堆小数位。查资料发现原因是由于计算机计算会先把数字转换成二进制计算,然后在转换为10进制,导致精度丢失。

在计算机角度,计算机算的是二进制,而不是十进制。二进制后变成了无线不循环的数,而计算机可支持浮点数的小数部分可支持到52位,所有两者相加,在转换成十进制,得到的数就不准确了,加减乘除运算原理一样。

例如:

let num1=0.28;
let num2=num1*100;
console.log(num1)    // 0.28
console.log(num2)    // 28.00000000000004



再比如:
0.1+0.2== 0.3    //嗯,逐渐离谱了......

解决办法

1、强制取整
let num2=parseInt(num1*100);
console.log(num2)    // 28

你可能感兴趣的:(JavaScript,javascript)