javascript(js)的小数点乘法除法问题详解

前端技术 2023/09/01 JavaScript

一、用js计算
12.32 * 7  结果是多少?答案:86.24000000000001

为什么会出现这种问题?怎么解决?
js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理。
以上的计算可以改为:
12.32 * 100 * 7 /100
得出的结果是:86.24,正确。

另外再计算一下:
8.80 * 100 * 12 / 100
结果:105.60000000000002
38.80也会出现类似的问题。

精确度增加10倍:
8.80 * 1000 * 12 / 1000
结果:105.6
正常了。

16.40 * 1000000 * 6 / 1000000
结果也有问题

为了让js执行的更准确,在以后的js小数计算中直接将值扩大10000倍,再除以10000,就可以解决问题。
var num = 38.80;
var num2 = 13;
alert(num * 10000 * 12 / 10000);

被乘和除的这个数经过测试10000最合适,小了有些数字出问题,大了(1000000)有些数字也出问题。

二、

复制代码 代码如下:

<script defer>
Number.prototype.rate=function(){
varoStr=this.toString();
if(oStr.indexOf(\".\")==-1)
return1;
else
returnMath.pow(10,parseInt(oStr.length-oStr.indexOf(\".\")-1));
}

functiontran(){
args=tran.arguments;
vartemp=1;
for(i=0;i<args.length;i++)
temp*=args[i]*args[i].rate();
for(i=0;i<args.length;i++)
temp/=args[i].rate();
returntemp
}
alert(tran(11,22.9));
</script>

本文地址:https://www.stayed.cn/item/2139

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。