js实现精准运算——加减乘除
精准运算
1.Math.pow()函数返回基数的指数次幂
Math.pow(2,3);// 8
2.除法
主要思路是先取到⼩数部分的位数,再通过去掉⼩数点的⽅式将⼩数转化为整数进⾏除法运算,最后再⽤计算结果乘以10的⼩数差的次幂倍
//除法函数,⽤来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会⽐较明显。这个函数返回较为精确的除法结果。
//调⽤:div(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function div(arg1, arg2){
var t1 =0,
t2 =0,
r1,
r2;
try{
t1 = String().split(".")[1].length;
}catch(e){
t1 =0;
}
try{
t2 = String().split(".")[1].length;
}catch(e){
t2 =0;
}
r1 =String().replace(".",""));
r2 =String().replace(".",""));
return mul(r1 / r2, Math.pow(10, t2 - t1));
}
3.乘法
//乘法函数,⽤来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会⽐较明显。这个函数返回较为精确的乘法结果。
//调⽤:mul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function mul(arg1, arg2){
var m =0,
s1 = String(),
javascript说明s2 = String();
try{
m += s1.split(".")[1].length;
}catch(e){
m =0;
}
try{
m += s2.split(".")[1].length;
}catch(e){
m = m ||0;
}
return(
(place(".",""))*place(".","")))/
Math.pow(10, m)
);
}
4.加法
function add(arg1, arg2){
var r1, r2, m, n;
try{
r1 = String().split(".")[1].length;
}catch(e){
r1 =0;
}
try{
r2 = String().split(".")[1].length;
}catch(e){
r2 =0;
}
m = Math.pow(10, Math.max(r1, r2));
n = r1 >= r2 ? r1 : r2;
return((arg1 * m + arg2 * m)/ m).toFixed(n); }
5.减法
function sub(arg1, arg2){
var r1, r2, m, n;
try{
r1 = String().split(".")[1].length;
}catch(e){
r1 =0;
}
try{
r2 = String().split(".")[1].length;
}catch(e){
r2 =0;
}
m = Math.pow(10, Math.max(r1, r2));
//动态控制精度长度
n = r1 >= r2 ? r1 : r2;
return((arg1 * m - arg2 * m)/ m).toFixed(n); }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。