Convert n*n multiplication to (n*n1) + (N*N2) .... (N*NN)
Add a decimal point after the ride
Public Static Char[] SUMF (stringAstringb) {Buweif (refArefb);//post-decimal complementlist<Char> item =Newlist<Char>(); List<Char> Ritems =Newlist<Char>(); intAl =a.length; intBL =b.length; intR =0; intJW =0;//Rounding Do { if(Al >0&& BL >0) { if(A[al-1] =='.') {R='.'; } Else{R= (int) A[al-1] + (int) B[BL-1] - the+JW; JW=0; if(R >=Ten) {JW++; R= R-Ten; } } } Else if(Al <=0&& BL >0) {R= B[BL-1] - -+JW; JW=0; if(R >=Ten) {JW++; R= R-Ten; } } Else if(Al >0&& BL <=0) {R= A[al-1] - -+JW; JW=0; if(R >=Ten) {JW++; R= R-Ten; } } if(r = = $) {Item. ADD (Convert.tochar (R)); } Else{item. ADD (Convert.tochar (r.tostring ())); } Al--; bl--; } while(Al >0|| BL >0); if(JW = =1) {Item. ADD ('1'); } for(inti = Item. Count ()-1; I >=0; i--) {Ritems. ADD (Item[i]); } returnRitems. ToArray (); } Public Static Char[] Quadrature (stringAstringb) {Char[] r =New Char[1] {'0' }; List<int> BU =Newlist<int>(); List<int> au =Newlist<int>(); intBdot =0; intAdot =0; for(inti = b.length-1; I >=0; i--) { if(B[i] = ='.') {Bdot=i; } Else{bu. ADD (B[i]- -); } } for(intI =a.length-1; I >=0; i--) { if(A[i] = ='.') {Adot=i; } Else{AU. ADD (A[i]- -); }} a=""; for(inti = AU. Count ()-1; I >=0; i--) {a+=Au[i]; } for(inti =0; I < bu. Count (); i++) { Char[] QQ =Quadunit (A, bu[i]); stringQQQ =""; for(intj =1; J < i +1; J + +) {QQQ=""; foreach(varIteminchQQ) {QQQ+=item; } QQ= Quadunit (QQQ,Ten); } QQQ=""; foreach(varIteminchQQ) {QQQ+=item; } stringRR =""; foreach(varIteminchR) {RR+=item; } R=SUMF (RR, QQQ); } Char[] re =New Char[r.length+1]; intJJJ =0; for(inti =0; I < Re. Length; i++) { if(I ==re. length-(A.length-adot + b.length-Bdot)) { if(I! = a.length +b.length) {Re[i]='.'; } } Else{Re[i]+=R[JJJ]; JJJ++; } } returnre; } Public Static Char[] Quadunit (stringAintb) {intR =0; intJW =0; Char[] C =A.tochararray (); List<Char> items =Newlist<Char>(); List<Char> Ritems =Newlist<Char>(); for(inti = C.count ()-1; I >=0; i--) { if(A[i] = ='.') {R='.'; Items. ADD (Convert.tochar (R)); } Else{R= ((int) C[i]- -) * B +JW; JW=0; if(R >=Ten) {JW= R/Ten; R%=Ten; } items. ADD (Convert.tochar (r.tostring ())); } } if(JW >0) {items. ADD (Convert.tochar (JW. ToString ())); } for(inti = (items. Count ()-1); I >=0; i--) {Ritems. ADD (Items[i]); } returnRitems. ToArray (); }
C # High-precision multiplication supports decimals (to be optimized)