标签: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