标签:javascript 模拟加法 待完善 写的不好 勿喷
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
(function AddBigInt(x,y){
function iiAdd(a,b){
var x,y,z,c;
(typeof a =="number")?(x=a):(x=parseInt(a));
(typeof b =="number")?(y=b):(x=parseInt(b));
z=x+y;
z>=10?(c=[1,z-10]):(c=[0,z]);
return c;
}
var xL=x.length, yL=y.length;
var xI=xL-yL,dI,tarA=[],cStr;
var jwI=0;
if(xI==0){
dI=xL;
for (var i = 0; i < dI; i++) {
var i1=dI-i-1;
var jiHe1 = parseInt(x.charAt(i1))+parseInt(y.charAt(i1)),
jiHe=jiHe1+"";
if(jiHe1>=10){
if(!!jwI){
tarA.unshift(parseInt(jiHe.charAt(1))+jwI);
}else{
tarA.unshift(parseInt(jiHe.charAt(1)));
}
jwI = parseInt(jiHe.charAt(0));
}else{
var add1 = iiAdd(parseInt(jiHe.charAt(0)),jwI);
if(!!jwI){
tarA.unshift(add1[1]);
jwI=add1[0];
}else{
tarA.unshift(parseInt(jiHe));
jwI=0;
}
}
}
if(!!jwI){
tarA.unshift(jwI);
}
console.log(tarA);
return tarA;
}else if(xI>0){
var cArr=[],dyJwI=0;
cStr=x.slice(0,xI);
for (var j = 0; j < xI; j++) {
cArr.unshift(parseInt(cStr.charAt(j)));
}
dI=yL;
for (var i = 0; i < dI; i++) {
var i1=dI-i-1,ix1=xL-i-1;
var jiHe1 = parseInt(x.charAt(ix1))+parseInt(y.charAt(i1)),
jiHe=jiHe1+"";
if(jiHe1>=10){
if(!!jwI){
tarA.unshift(parseInt(jiHe.charAt(1))+jwI);
}else{
tarA.unshift(parseInt(jiHe.charAt(1)));
}
jwI = parseInt(jiHe.charAt(0));
}else{
var add1 = iiAdd(parseInt(jiHe.charAt(0)),jwI);
if(!!jwI){
tarA.unshift(add1[1]);
jwI=add1[0];
}else{
tarA.unshift(parseInt(jiHe));
jwI=0;
}
}
}
if(!!jwI){
dyJwI = jwI;
for (var k = xI; k > 0; k--) {
var dyXAdd = iiAdd(cArr[k-1],dyJwI);
cArr[k-1] = dyXAdd[1];
dyJwI = dyXAdd[0];
if(!dyXAdd[0])break;
}
}
(!!dyJwI)?cArr.unshift(dyJwI):"";
console.log(cArr);
console.log(tarA);
console.log(cArr.concat(tarA));
return cArr.concat(tarA);
}else if(xI< 0){
var xI1 = 0 - xI;
var cArr=[],dyJwI=0;
cStr=y.slice(0,xI1);
for (var j = 0; j < xI1; j++) {
cArr.unshift(parseInt(cStr.charAt(j)));
}
cArr=cArr.reverse();
dI=xL;
for (var i = 0; i < dI; i++) {
var i1=dI-i-1,iy1=yL-i-1;
var jiHe1 = parseInt(x.charAt(i1))+parseInt(y.charAt(iy1)),
jiHe=jiHe1+"";
if(jiHe1>=10){
if(!!jwI){
tarA.unshift(parseInt(jiHe.charAt(1))+jwI);
}else{
tarA.unshift(parseInt(jiHe.charAt(1)));
}
jwI = parseInt(jiHe.charAt(0));
}else{
var add1 = iiAdd(parseInt(jiHe.charAt(0)),jwI);
if(!!jwI){
tarA.unshift(add1[1]);
jwI=add1[0];
}else{
tarA.unshift(parseInt(jiHe));
jwI=0;
}
}
}
if(!!jwI){
dyJwI = jwI;
for (var k = xI1; k > 0; k--) {
var dyXAdd = iiAdd(cArr[k-1],dyJwI);
cArr[k-1] = dyXAdd[1];
dyJwI = dyXAdd[0];
if(!dyXAdd[0])break;
}
(!!dyJwI)?cArr.unshift(dyJwI):"";
}
console.log(cArr);
console.log(tarA);
console.log(cArr.concat(tarA));
return cArr.concat(tarA);
}
})("77778","211999922222")
/*
"11111","22222"
"111111","22222"
"22222","111111"
"22222","77778"
"999922222","77778"
"77778","999922222"
"77778","211999922222"
*/
</script>
</head>
<body>
</body>
</html>本文出自 “11236531” 博客,请务必保留此出处http://11246531.blog.51cto.com/11236531/1868223
标签:javascript 模拟加法 待完善 写的不好 勿喷
原文地址:http://11246531.blog.51cto.com/11236531/1868223