加法与减法:处理方式一致
function add(a, b) {
a = parseFloat(a).toString();
b = parseFloat(b).toString();
let alen = 0, blen = 0;
if(a.indexOf('.') > -1){
alen = a.split('.')[1].length;
a = a.replace('.','');
}
if(b.indexOf('.') > -1){
blen = b.split('.')[1].length;
b = b.replace('.','');
}
let clen = alen - blen;
if(clen > 0){
for(let i = 0; i < clen; i++) {
b += '0'
}
}else if(clen < 0){
clen = clen * (-1);
for(let i = 0; i < clen; i++) {
a += '0'
}
}
let c = parseInt(a) + parseInt(b)
let n = Math.pow(10, Math.max(alen,blen))
return c/n;
}
相乘也是一样的原理(哈哈哈,数据不要太大哦);
只是add函数中最后得到的n要变成 nn;c变成ab
function multiply() {
//......省略相同的代码
let c = parseInt(a) * parseInt(b)
let n = Math.pow(10, Math.max(alen,blen))
let n2 = n*n
return c/n2;
}
相除则 a/b 即可
function divede() {
//......省略相同的代码
return parseInt(a) * parseInt(b)
}
所以可以封装一个函数,通过第三个参数判断是哪种运算符
精度自行校验,看看是否需要再进一步的处理哦
//获取两个数的计算结果,默认为加法
function jisuan(a, b, type = 'plus') {
a = parseFloat(a).toString();
b = parseFloat(b).toString();
let alen = 0, blen = 0;
if(a.indexOf('.') > -1){
alen = a.split('.')[1].length;
a = a.replace('.','');
}
if(b.indexOf('.') > -1){
blen = b.split('.')[1].length;
b = b.replace('.','');
}
let clen = alen - blen;
if(clen > 0){
for(let i = 0; i < clen; i++) {
b += '0'
}
}else if(clen < 0){
clen = clen * (-1);
for(let i = 0; i < clen; i++) {
a += '0'
}
}
if(type == 'plus'){ //加
return (parseInt(a) + parseInt(b))/ Math.pow(10, Math.max(alen,blen))
}
if(type == 'minus'){//减
return (parseInt(a) - parseInt(b))/ Math.pow(10, Math.max(alen,blen))
}
if(type == 'multiply'){//乘
return (parseInt(a) * parseInt(b))/ Math.pow(Math.pow(10, Math.max(alen,blen)),2)
}
if(type == 'divede'){//除
return parseInt(a) / parseInt(b)
}
//......其他情况
return 0
}