广树
2024-11-21 16:04
@hikari:BGM也许是吧,歌曲部分感觉不一定
作者:广树时间:2018-08-02 09:38:49分类:JavaScript/jQuery/Vue
一般情况下JS使用数字运算比较大的大整数:
10000000000000000 - 1 = 10000000000000000
所以这里还是要用字符串去运算比较大的正整数
function minus(a, b){//字符串减法 a = a.split(''); b = b.split(''); var aMaxb = a.length > b.length; // 标记A是否大于B if(a.length == b.length) { for(var i=0, len=a.length; i<len; i++) { if(a[i] == b[i]) continue; aMaxb = a[i] > b[i]; break; } } if(!aMaxb){ a = [b, b = a][0]; // 只要A不比B大都交换 } var result = ''; while(a.length) { var temp = parseInt(a.pop()) - parseInt(b.pop() || 0); if(temp >= 0) { result = temp + result; } else{ result = temp + 10 + result; a[a.length-1]--; // 由于已经保证了a一定大于等于b,所以不存在a[i-1]为undefined的情况 } } var resultEnd = (aMaxb?'':'-') + result.replace(/^0*/g, '');// 去掉前面可能的无效0 if(resultEnd === '-'){ resultEnd = '0' } return resultEnd; }
例:
minus('10000000000000000000000', '1')
"9999999999999999999999"
minus('1', '2')
"-1"
minus('1', '1')
"0"