本文主要是介绍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
这篇关于JS计算中出现无限小数位的情况的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!