js加减乘除精确运算方法实例代码
前言
因为计算机数字是浮点型,所以在计算过程中通常得到的并不是一个准确的数据,所以在做一些数组运算的时候比较头疼,我们这里就来写一下精确运算的方法
首先是加法(这里以两个数据相加为例)
functionadd(arg1,arg2){
arg1=arg1.toString(),arg2=arg2.toString();//将传入的数据转化为字符串
vararg1Arr=arg1.split("."),//将小数的数据从小数点的位置拆开
arg2Arr=arg2.split("."),
d1=arg1Arr.length==2?arg1Arr[1]:"",//获取第一个数的小数点的长度
d2=arg2Arr.length==2?arg2Arr[1]:"";//获取第二个数的小数点的长度
varmaxLen=Math.max(d1.length,d2.length);//获取小数点长度较大的值
varm=Math.pow(10,maxLen);//这里表示10的小数点长度次方也就是说如果小数点长度为2m的值就是100如果小数点长度是3m的值就是1000如果不懂请自行查找api
varresult=Number(((arg1*m+arg2*m)/m).toFixed(maxLen));//将小数转化为整数后相加在除掉两个数乘过的倍数然后去小数点较长的长度的小数位数
vard=arguments[2];//第三个参数用户可以自行决定是否要传递用来定义要保留的小数长度
returntypeofd==="number"?Number((result).toFixed(d)):result;
}
add(12.123,12)
然后是减法(减法其实就是一个数组加上另一个数字的负数所以和加法逻辑相同)
functionsun(arg1,arg2){
returnadd(arg1,-arg2)
}
其次是乘法
functionmul(arg1,arg2){
varr1=arg1.toString(),//将传入的数据转化为字符串
r2=arg2.toString(),
m,resultVal,d=arguments[2];
m=(r1.split(".")[1]?r1.split(".")[1].length:0)+(r2.split(".")[1]?r2.split(".")[1].length:0);//获取两个数字的小数位数的和
//乘积的算法就是去掉小数点做整数相乘然后除去10的所有小数位的次方
resultVal=Number(r1.replace(".",""))*Number(r2.replace(".",""))/Math.pow(10,m);
returntypeofd!=="number"?Number(resultVal):Number(resultVal.toFixed(parseInt(d)));
}
最后是减法(除法和乘法就是一个相反的过程,不做过多解释)
functiondiv(arg1,arg2){
varr1=arg1.toString(),
r2=arg2.toString(),
m,resultVal,d=arguments[2];
m=(r2.split(".")[1]?r2.split(".")[1].length:0)-(r1.split(".")[1]?r1.split(".")[1].length:0);
resultVal=Number(r1.replace(".",""))/Number(r2.replace(".",""))*Math.pow(10,m);
returntypeofd!=="number"?Number(resultVal):Number(resultVal.toFixed(parseInt(d)));
}
总结
到此这篇关于js加减乘除精确运算方法的文章就介绍到这了,更多相关js加减乘除精确运算内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!