精准运算
1.Math.pow()函数返回基数的指数次幂
Math
.pow(2,3);
2.除法
主要思路是先取到小数部分的位数,再通过去掉小数点的方式将小数转化为整数进行除法运算,最后再用计算结果乘以10的小数差的次幂倍
function div(arg1
, arg2
) {
var t1
= 0,
t2
= 0,
r1
,
r2
;
try {
t1
= arg1
.toString().split(".")[1].length
;
} catch (e) {
t1
= 0;
}
try {
t2
= arg2
.toString().split(".")[1].length
;
} catch (e) {
t2
= 0;
}
r1
= Number(arg1
.toString().replace(".", ""));
r2
= Number(arg2
.toString().replace(".", ""));
return mul(r1
/ r2
, Math
.pow(10, t2
- t1
));
}
3.乘法
function mul(arg1
, arg2
) {
var m
= 0,
s1
= arg1
.toString(),
s2
= arg2
.toString();
try {
m
+= s1
.split(".")[1].length
;
} catch (e) {
m
= 0;
}
try {
m
+= s2
.split(".")[1].length
;
} catch (e) {
m
= m
|| 0;
}
return (
(Number(s1
.replace(".", "")) * Number(s2
.replace(".", ""))) /
Math
.pow(10, m
)
);
}
4.加法
function add(arg1
, arg2
) {
var r1
, r2
, m
, n
;
try {
r1
= arg1
.toString().split(".")[1].length
;
} catch (e) {
r1
= 0;
}
try {
r2
= arg2
.toString().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
= arg1
.toString().split(".")[1].length
;
} catch (e) {
r1
= 0;
}
try {
r2
= arg2
.toString().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
);
}
转载请注明原文地址: https://mac.8miu.com/read-501975.html