function subtract(f, t) {
f += '';
t += '';
let fl = f.length, tl = t.length, minus = false, minuend = f, subtractor = t,
len = tl, maxLen = fl, m, s, currIndex, currT = false, i, sp;
function reverse(s) {
return s.split('').reverse();
}
if (fl < tl) {
minus = true;
minuend = t;
subtractor = f;
len = fl;
maxLen = tl;
} else if (fl === tl) {
for (i = 0; i < fl; i++) {
if (f[i] > t[i]) {
minus = false;
minuend = f;
subtractor = t;
len = tl;
maxLen = fl;
break;
} else if (f[i] < t[i]) {
minus = true;
minuend = t;
subtractor = f;
len = fl;
maxLen = tl;
break;
}
}
}
minuend = reverse(minuend);
subtractor = reverse(subtractor);
for (i = 0; i < len; i++) {
m = minuend[i] * 1;
s = subtractor[i] * 1;
if (m >= s) {
minuend[i] = m - s;
} else {
currIndex = i + 1;
do {
if (minuend[currIndex] !== '0') {
sp = currIndex - i;
minuend[currIndex] = minuend[currIndex] * 1 - 1 + '';
currIndex--;
for (let j = 0; j < sp; j++) {
if (currIndex === i) {
minuend[currIndex] = 10 + m - s + '';
} else {
minuend[currIndex--] = '9';
}
}
currT = false;
} else {
currT = true;
}
} while (currT && ++currIndex < maxLen);
}
}
minuend = reverse(minuend.join('').replace(/0+$/gi, '')).join('');
return minus ? '-' + minuend : minuend;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。