본문으로 건너뛰기

계산기2(r225판 Blame)

r225
r192
1[[분류:냥]][[분류:계산용 틀]][Include(틀:상세 내용, 설명대상=원본, 문서명=틀\:구 계산기2)][Include(틀:상세 내용, 설명대상=떼어낸 계산기, 문서명=틀\:계산기2-1)]{{{#!wiki style="display: none;"
r129
2##디버그용 if 문법 ("문자열" 값으로 정의해야 합니다.)
3{{{#!if a= ,b= ,f=
r182
4}}}
r209
5##== 변수 설명 ==
r50
6'''as''' : "a" value to string; '''bs''' : "b" value to string;
r51
7'''al''' : "a" string length (integer); '''bl''' : "b" string length (integer)
8'''ad''' : "a" decimal point (integer); '''bd''' : "b" decimal point (integer);
9'''au''' : --gold-- "a" upper value (string→integer); '''bu''' : "b" upper value (string→integer);
10'''ab''' : "a" below value (string→integer); '''bb''' : "b" below value (string→integer);
r202
11'''ap''' : "a" # of places of decimal (for addition or subtraction);
r207
12'''ac''' : a '''c'''onstant of "a" for division (integer);
r202
13'''bp''' : "b" # of places of decimal (for addition or subtraction);
r207
14'''bc''' : a '''c'''onstant of "b" for division (integer);
r50
150.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
r73
16'''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string);
17'''rp''' : "result" # of places of decimal (integer);
r117
18'''rs''' : "result" suprerior value (integer→string); '''ri''' : "result" inferior value (integer→string);
r209
19'''i''' : index;
20'''tu''' : temporary value 1 (integer); '''tv''' : temporary value 2 (integer);
21'''tw''' : temporary value 3 (integer); '''tx''' : temporary value 4 (integer);
22'''ty''' : temporary value 5 (integer);
r208
23'''ps''' : pass (logical); '''ts''' : --not about gender-- test (logical) ; '''br''' : break (logical);
r209
24'''ea''' : error code about "a" (integer); '''eb''' : error code about "b" (integer);
25'''wa''' : warning code about "a" (integer); '''wb''' : warning code about "b" (integer);
26'''ma''' : message about "a" (string); '''mb''' : message about "b" (string);
27'''tm''' : temporary string, or transaction message (string); '''tn''' : temporary string 2 (string);
r158
28'''ns''' : negative sign for multiplication and division (string);
r209
29
30##== 초기화 ==
31값을 미리 정의하여 초기화합니다. 중간에 --장난으로-- 계산에 사용되는 변수에 값을 부여한 채로 include 하더라도 이를 무시합니다.
r220
32{{{#!if this.as=a.toString(), this.bs=b.toString(), this.rs=0+0, this.ru=0+0, this.rb=0+0, this.ri=0+0, this.rp=0+0, this.i=0+0, this.tu=0, this.tv=1+0, this.tw=0, this.tx=0, this.ty=0, this.ea=0+0, this.eb=0+0, this.wa=0+0, this.wb=0+0, this.ps=false, this.ts=false, this.br=false, this.ns="", this.ma="", this.mb="", this.tm=""
r135
33}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
r48
34}}}{{{#!if ad!=-1
r126
35소수점이 발견되는 자리 번호가 ad이므로 ad+1번에 해당되는 자리부터 끝까지 표기합니다.
r51
36{{{#!if this.au=as.substr(0,ad), this.ab=as.substr(ad+1, al-ad-1), this.ap=ab.length
r59
37}}}{{{#!if (au=="")||(au=="-")||(au=="+")
r125
38.12345 식으로 또는 -.12345 식으로 기입할 경우 upper 값을 0으로 부여합니다.
r57
39{{{#!if au="0"
r51
40}}}}}}}}}{{{#!if ad==-1
r126
41소수점이 존재하지 않을 경우 au 문자열 길이값을 ad로 정의합니다. au의 마지막 문자열 index는 ad-1이 됩니다.
r125
42{{{#!if this.au=as, ab="", ap=0+0, ad=au.length
r48
43}}}}}}{{{#!if bd!=-1
r92
44{{{#!if this.bu=bs.substr(0,bd), this.bb=bs.substr(bd+1, bl-bd-1), this.bp=bb.length
r59
45}}}{{{#!if (bu=="")||(bu=="-")||(bu=="+")
r57
46{{{#!if bu="0"
r48
47}}}}}}}}}{{{#!if bd==-1
r125
48{{{#!if this.bu=bs, bb="", bp=0+0, bd=bu.length
r46
49}}}}}}
r54
50
r207
51##== 유효성 검사 ==
r212
52the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기를 합니다. (소수점 위 최대 18자리, 소수점 아래 최대 18자리)
r55
53
r207
54(반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.)
r212
55
r218
56{{{#!if (as!=null)&&(bs!=null)
57a와 b 모두 입력되었을 때, br와 ts 변수를 이용하여 순차적으로 검사를 진행합니다. 도중 문제가 있으면 (br를 true로 반환하고) 오류 코드를 내도록 만듭니다. a를 먼저 보며, 소수점 윗부분을 먼저 본 다음 소수점 아랫부분을 봅니다.
r211
58변수 tm와 tn을 가져와 유효성 검사를 실행합니다.
59먼저 소수점을 2개 이상 입력했음이 탐지된다면 오류코드 5번(이중 소수점 표기)을 반환합니다.
60소수점을 입력하면 indexOf와 lastIndexOf는 서로 다른 값을 가리키게 됩니다. 소수점을 입력하지 않았을 경우 indexOf와 lastIndexOf는 -1로 서로 같은 값을 가리키게 됩니다.
r217
61{{{#!if ts=(as.indexOf(".")==as.lastIndexOf(".")),
r211
62}}}{{{#!if !ts&&!br
63{{{#!if br=true, ea=5
64}}}}}}
r209
65
r211
66문제가 없으면 au를 tm으로 복제하고 검사를 계속 합니다.
67앞자리가 마이너스(-)일 경우 이를 잘라냅니다.
68{{{#!if ts&&!br
r215
69{{{#!if tm=au, tm[0]==45
r214
70{{{#!if tm=tm.substr(1)
r215
71}}}}}}
r209
72소수점 윗자릿수가 넘치면 오류코드 1번(오버플로)를 반환합니다.
r211
73{{{#!if ts=(tm.length<=18)
74}}}}}}
75{{{#!if !ts&&!br
r208
76{{{#!if br=true, ea=1
77}}}}}}
r209
78
r211
79tm 앞에 의도적으로 00을 적어놓았을 수 있으므로 앞에 숫자 1을 더 붙인 다음, 이를 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다면 숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나오게 됩니다.
80숫자가 아닌 문구를 섞어넣었음이 탐지될 경우 오류코드 6번(소수점 윗자리 오류)을 반환합니다. (반점(,)도 걸릴 수 있습니다.)
r208
81{{{#!if ts&&!br
r211
82{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
r208
83}}}}}}
r211
84{{{#!if !ts&&!br
85{{{#!if br=true, ea=6
86}}}}}}
r209
87
r211
88소수점 아래 부분을 검사합니다. 앞에서 소수점 개수를 검사했으므로 소수점 아래 부분에 점(.)이 더 이상 나올 수 없습니다.
89소수점 아래 입력한 자릿수가 19자리를 넘어가면 오류 대신 경고코드 1번(소수점 아래 자릿수 너무 많음)을 반환하고 소수점 아래 자릿수를 최대 18자리로 잘라냅니다. (이하 이상한 문구를 섞어도 이를 계산에 넣지 않게 됩니다.)
r208
90{{{#!if ts&&!br
r211
91{{{#!if ab.length>=19
92{{{#!if wa=1, ab=ab.substr(0,18), ap=18
r199
93}}}}}}
r211
94
r212
95앞에서 소수점 아래 자릿수를 18자 이하로 줄였습니다. 문자열에서 자릿수에 해당하는 index가 비어있다면 해당 문자열의 주소값은 null이 나옵니다. (예:"테스트"[3]==null) 숫자는 문자열 각 자릿수 문자열의 유니코드 값이 null이 아닌 이상 48 이상 57 이하이며, 이를 이용하여 소수점 아래 18자리에 대해 유효성 검사를 합니다.
96{{{#!if ts=(((ab[0]==null)||((ab[0]>=48)&&(ab[0]<=57)))&&((ab[1]==null)||((ab[1]>=48)&&(ab[1]<=57)))&&((ab[2]==null)||((ab[2]>=48)&&(ab[2]<=57)))&&((ab[3]==null)||((ab[3]>=48)&&(ab[3]<=57)))&&((ab[4]==null)||((ab[4]>=48)&&(ab[4]<=57)))&&((ab[5]==null)||((ab[5]>=48)&&(ab[5]<=57)))&&((ab[6]==null)||((ab[6]>=48)&&(ab[6]<=57)))&&((ab[7]==null)||((ab[7]>=48)&&(ab[7]<=57)))&&((ab[8]==null)||((ab[8]>=48)&&(ab[8]<=57)))&&((ab[9]==null)||((ab[9]>=48)&&(ab[9]<=57)))&&((ab[10]==null)||((ab[10]>=48)&&(ab[10]<=57)))&&((ab[11]==null)||((ab[11]>=48)&&(ab[11]<=57)))&&((ab[12]==null)||((ab[12]>=48)&&(ab[12]<=57)))&&((ab[13]==null)||((ab[13]>=48)&&(ab[13]<=57)))&&((ab[14]==null)||((ab[14]>=48)&&(ab[14]<=57)))&&((ab[15]==null)||((ab[15]>=48)&&(ab[15]<=57)))&&((ab[16]==null)||((ab[16]>=48)&&(ab[16]<=57)))&&((ab[17]==null)||((ab[17]>=48)&&(ab[17]<=57))))
r199
97}}}}}}
r211
98소수점 아래 자리에 입력한 부분이 문제가 있으면 오류코드 7번(소수점 아랫자리 오류)를 반환합니다.
r209
99{{{#!if !ts&&!br
r211
100{{{#!if br=true, ea=7
r209
101}}}}}}
102
r212
103이와 같은 방법으로 b도 bu를 tm으로 복제하는 과정을 포함하여 유효성 검사를 실행합니다. 오류코드는 동일합니다.
r213
104a와 b를 각각 진단해야 하므로 br를 false로 초기화합니다.
105{{{#!if br=false, ts=(bs.indexOf(".")==bs.lastIndexOf("."))
106}}}{{{#!if !ts&&!br
r212
107{{{#!if br=true, eb=5
108}}}}}}
109{{{#!if ts&&!br
r215
110{{{#!if tm=bu, tm[0]==45
r214
111{{{#!if tm=tm.substr(1)
r212
112}}}}}}{{{#!if ts=(tm.length<=18)
113}}}}}}{{{#!if !ts&&!br
114{{{#!if br=true, eb=1
115}}}}}}
116{{{#!if ts&&!br
117{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
118}}}}}}{{{#!if !ts&&!br
119{{{#!if br=true, eb=6
120}}}}}}
121{{{#!if ts&&!br
122{{{#!if bb.length>=19
123{{{#!if wb=1, bb=bb.substr(0,18), bp=18
124}}}}}}{{{#!if ts=(((bb[0]==null)||((bb[0]>=48)&&(bb[0]<=57)))&&((bb[1]==null)||((bb[1]>=48)&&(bb[1]<=57)))&&((bb[2]==null)||((bb[2]>=48)&&(bb[2]<=57)))&&((bb[3]==null)||((bb[3]>=48)&&(bb[3]<=57)))&&((bb[4]==null)||((bb[4]>=48)&&(bb[4]<=57)))&&((bb[5]==null)||((bb[5]>=48)&&(bb[5]<=57)))&&((bb[6]==null)||((bb[6]>=48)&&(bb[6]<=57)))&&((bb[7]==null)||((bb[7]>=48)&&(bb[7]<=57)))&&((bb[8]==null)||((bb[8]>=48)&&(bb[8]<=57)))&&((bb[9]==null)||((bb[9]>=48)&&(bb[9]<=57)))&&((bb[10]==null)||((bb[10]>=48)&&(bb[10]<=57)))&&((bb[11]==null)||((bb[11]>=48)&&(bb[11]<=57)))&&((bb[12]==null)||((bb[12]>=48)&&(bb[12]<=57)))&&((bb[13]==null)||((bb[13]>=48)&&(bb[13]<=57)))&&((bb[14]==null)||((bb[14]>=48)&&(bb[14]<=57)))&&((bb[15]==null)||((bb[15]>=48)&&(bb[15]<=57)))&&((bb[16]==null)||((bb[16]>=48)&&(bb[16]<=57)))&&((bb[17]==null)||((bb[17]>=48)&&(bb[17]<=57))))
125}}}}}}{{{#!if !ts&&!br
126{{{#!if br=true, eb=7
r218
127}}}}}}}}}
r211
128
r209
129##== 2차 초기화 ==
130입력한 소수점 아래에 입력한 값을 정리합니다. 이에 따라 ap, bp값도 다시 조정됩니다.
r223
131{{{#!if (ap>9)&&(ab.substr(ap-9,9)=="000000000")
r221
132{{{#!if ab=ab.substr(0,ap-9), ap=ap-9
r209
133}}}}}}
r223
134{{{#!if (ap>4)&&(ab.substr(ap-4,4)=="0000")
r209
135{{{#!if ab=ab.substr(0,ap-4), ap=ap-4
136}}}}}}
r223
137{{{#!if (ap>2)&&(ab.substr(ap-2,2)=="00")
r209
138{{{#!if ab=ab.substr(0,ap-2), ap=ap-2
139}}}}}}
r223
140{{{#!if (ap>2)&&(ab.substr(ap-2,2)=="00")
r209
141{{{#!if ab=ab.substr(0,ap-2), ap=ap-2
142}}}}}}
r223
143{{{#!if (ap>1)&&(ab.substr(ap-1,1)=="0")
r209
144{{{#!if ab=ab.substr(0,ap-1), ap=ap-1
145}}}}}}
r223
146{{{#!if (bp>9)&&(bb.substr(bp-9,9)=="000000000")
r221
147{{{#!if bb=bb.substr(0,bp-9), bp=bp-9
r209
148}}}}}}
r223
149{{{#!if (bp>4)&&(bb.substr(bp-4,4)=="0000")
r209
150{{{#!if bb=bb.substr(0,bp-4), bp=bp-4
151}}}}}}
r223
152{{{#!if (bp>2)&&(bb.substr(bp-2,2)=="00")
r209
153{{{#!if bb=bb.substr(0,bp-2), bp=bp-2
154}}}}}}
r223
155{{{#!if (bp>2)&&(bb.substr(bp-2,2)=="00")
r209
156{{{#!if bb=bb.substr(0,bp-2), bp=bp-2
157}}}}}}
r223
158{{{#!if (bp>1)&&(bb.substr(bp-1,1)=="0")
r209
159{{{#!if bb=bb.substr(0,bp-1), bp=bp-1
160}}}}}}
r207
161
162##== 덧셈, 뺄셈 ==
r66
163덧셈과 뺄셈 계산과정을 적어봅니다.
164{{{#!if (f=="+")||(f=="-")
r76
165
166a과 b의 소수점 윗부분은 정수이므로 쉽게 계산할 수 있습니다.
167{{{#!if f=="+"
168{{{#!if ru=(+au)+(+bu)
169}}}}}}
170{{{#!if f=="-"
171{{{#!if ru=(+au)-(+bu)
172}}}}}}
173
r125
174a와 b 모두가 정수이면 ap==0, bp==0이 되며, 이런 경우에는 소수점 아래 자릿수를 검산할 필요가 없습니다. a와 b 중 소수점 아래 자릿수가 있는 수가 있을 때에만 소수점 윗자리의 계산값이 얼마가 나오느냐를 보면서 소수점 아래의 자릿수를 정리하는 과정이 의미가 있습니다.
r76
175{{{#!if (ap>0)||(bp>0)
r142
176만약 소수점 아래를 계산한다면 자릿수를 똑같이 맞춰야 의미가 있으므로, 자릿수가 다른 경우 자릿수가 같게 만드는 과정을 먼저 거칩니다. 이를테면 a의 소수점 자릿수가 b의 소수점 자릿수보다 많으면 b뒤에 0을 더 추가하는 방식으로 변경합니다. b 자체가 정수여도 앞에 (소수점이 없을 경우) 이미 bb="", bp=0+0으로 초기화했으므로 동작될 것입니다.
177소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18칸 차이가 나게 됩니다.
178○○○○○○○○○□□□□○○□□○ 과 같이 9칸, 4칸, 2칸, 2칸, 1칸씩 차이가 나면 그 정도를 보정하게 됩니다.
179ap>bp에서 ap-bp>0이 됩니다. ap-bp는 곧 ap가 bp보다 몇 칸만큼 더 많은지를 나타냅니다.
r161
180{{{#!if ap>bp
181{{{#!if bp=ap, bb+="000000000000000000"
182}}}{{{#!if bb=bb.substr(0,ap)
r66
183}}}}}}
r67
184
185반대로 b의 소수점 자릿수가 많은 경우도 있습니다.
r161
186{{{#!if bp>ap
187{{{#!if ap=bp, ab=ab+"000000000000000000"
188}}}{{{#!if ab=ab.substr(0,bp)
r67
189}}}}}}
r161
190
r71
191위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다.
r66
192
r71
193a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다.
r68
194{{{#!if as[0]==45
195{{{#!if ab="-"+ab
196}}}}}}
r123
197마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다. 10을 소수점 아래 자릿수만큼 제곱한 값으로 저장합니다.
r68
198{{{#!if bs[0]==45
199{{{#!if bb="-"+bb
200}}}}}}
201
r76
202이때 rb를 계산합니다.
r65
203{{{#!if f=="+"
r76
204{{{#!if rb=(+ab)+(+bb)
r65
205}}}}}}
206{{{#!if f=="-"
r76
207{{{#!if rb=(+ab)-(+bb)
r65
208}}}}}}
r75
209
r69
210소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
r86
211이 때 rb가 0이 아닐 경우에만 문자열로 변환합니다.
212{{{#!if (+rb>0)||(+rb<0)
r69
213{{{#!if this.rb=rb.toString()
214}}}
r71
215문자열로 된 rb의 길이를 rp로 정의합니다.
r69
216{{{#!if this.rp=rb.length
217}}}
r86
218}}}
r94
219
r73
220rb가 음수이면 rb의 첫번째(0번 index)의 문자열에는 마이너스(-)가 들어갑니다. 이 때는 rp를 rb의 마이너스 문자열을 세지 않은 자릿수가 되도록 앞에서 정의했던 rb.length에서 1만큼 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 값이 고정되어 있으므로 rp처럼 줄일 필요가 없습니다.
r69
221{{{#!if rb[0]==45
r70
222{{{#!if rp=rp-1
r69
223}}}}}}
r57
224
r94
225ru값이 어떤지 보고 각 경우 rb값이 어떠한가에 따라 rb만 정리하거나 rb와 ru 모두 정리합니다.
r149
226중복 처리를 막기 위해 초기화된 ps 변수 하나를 가져옵니다.
r111
227
228소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다.
229
r162
230{{{#!if tv=+("1000000000000000000".substr(0,ap+1))
231}}}
r111
232
r75
233Case 1 : ru가 0보다 큰 경우
r71
234ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다.
r65
235{{{#!if ru>0
r75
236Case 1-1 : rb가 0 이상인 경우
r104
237{{{#!if (+rb>=0)&&(ps==false)
r73
238rb가 소수점 아래 자릿수를 초과하여 소수점 위의 수를 계산하게 생겼다면 ap=bp인 상황에서 rp>ap가 됩니다. rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
r71
239{{{#!if rp>ap
240{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r69
241}}}}}}
r73
242rb가 소수점 아래 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다.
r71
243{{{#!if rp<=ap
r72
244}}}
r104
245{{{#!if ps=true
r73
246}}}
r104
247}}}
r73
248
r94
249Case 1-2 : rb가 음수인 경우 ru에서 1을 빌려옵니다. 1보다 작은 양수값에서 1보다 작은 양수값을 빼면 -1보다 작을 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r104
250{{{#!if (+rb<0)&&(ps==false)
r73
251{{{#!if ru=ru-1
252}}}
r111
253소수점 아래 자릿수인 ap만큼 10을 제곱한 값(tv)을 rb에서 증가시켜 rb를 재정의합니다. 그러면 rb는 양수가 됩니다. 그리고 rb를 다시 문자열로 변환합니다.
254{{{#!if rb=tv+(+rb)
r73
255}}}{{{#!if rb=rb.toString()
256}}}
r104
257{{{#!if ps=true
258}}}}}}
r73
259정리과정을 끝냈으면 ru를 string으로 변환합니다.
260{{{#!if this.ru=ru.toString()
r71
261}}}}}}
262
r75
263Case 2 : ru가 0인 경우 ru가 0이 되면 rb의 값이 양수인지 음수인지에 따라 달라집니다.
r65
264{{{#!if ru==0
r75
265Case 2-1 : rb가 0 이상인 경우
r104
266{{{#!if (+rb>=0)&&(ps==false)
r73
267rb가 양수이면서 rb가 자릿수를 초과한 경우 rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
268{{{#!if rp>ap
269{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r104
270}}}}}}{{{#!if ps=true
271}}}}}}
r75
272Case 2-2 : rb가 음수인 경우
r104
273{{{#!if (+rb<0)&&(ps==false)
r75
274rb가 음수이면서 rb가 자릿수를 초과한 경우 값이 0인 ru에 1을 빼야 합니다. 그리고 rb가 "-"+숫자 꼴이므로 문자열의 1번 index에 해당하는 1을 지워야 합니다. 앞에서 rb가 음수인 경우 rp는 rb의 마이너스(-)가 차지하는 자릿수를 계산하지 않은 값 곧 숫자들이 차지하는 자릿수이므로, rb를 길이가 rp-1인 숫자들로 다시 정의합니다.
r73
275{{{#!if rp>ap
r75
276{{{#!if ru=ru-1, rb=rb.substr(2, rp-1)
277}}}}}}
278rb가 자릿수를 초과하지 않은 경우 rb에서 "-"를 뺀 문자열로 rb를 다시 정의합니다.
r101
279{{{#!if rp<=ap
r76
280{{{#!if rb=rb.substr(1, rp)
r104
281}}}}}}{{{#!if ps=true
282}}}}}}
r73
283정리과정을 끝냈으면 ru를 string으로 변환합니다.
284{{{#!if this.ru=ru.toString()
r65
285}}}
r75
286-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우 ru 문자열 앞에 "-"를 붙입니다.
287f가 "+"인지 "-"인지에 따라 처음 rb를 정의할 때 적었던 식을 다시 불러옵니다.
288{{{#!if ((f=="+")&&((+ab)+(+bb)<0))||((f=="-")&&((+ab)-(+bb)<0))
289{{{#!if ru="-"+ru
290}}}}}}
r73
291}}}
r74
292
r75
293Case 3 : ru가 0보다 작은 경우. 곧 -1 이하인 음수가 되는 경우.
r65
294{{{#!if ru<0
r76
295Case 3-1 : rb가 0 이하인 경우
r104
296{{{#!if (+rb<=0)&&(ps==false)
r76
297rb가 음수이면서 자릿수를 초과한 경우 ru에 -1을 빼고, rb의 음수기호(-)와 첫번째 숫자인 문자열 "1"을 뺀 문자열로 rb를 다시 정의합니다.
298{{{#!if rp>ap
r80
299{{{#!if rb=rb.substr(2, rp-1)
r65
300}}}
r80
301}}}
r107
302rb가 자릿수를 초과하지 않은 경우 rp는 음수기호를 제외한 숫자 자릿수이므로 rb를 음수기호만을 뺀 문자열로 다시 정의합니다. 단, rb가 0이 되면 rp==1이 되므로 rb==0인 경우는 제외합니다.
r101
303{{{#!if (rp<=ap)&&(+rb<0)
r106
304{{{#!if rb=rb.substr(1, rp)
r104
305}}}}}}{{{#!if ps=true
306}}}}}}
r82
307Case 3-2 : rb가 0보다 큰 경우. 소수점 아래 부분을 보면 -1보다 큰 음수값에서 -1보다 큰 음수값을 빼면 1보다 클 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r104
308{{{#!if (+rb>0)&&(ps==false)
r82
309ru<=-1이므로 ru+1를 해도 최대 0이 됩니다.
310{{{#!if ru=ru+1
r75
311}}}
r111
312rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값(tv)에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다.
313{{{#!if rb=tv-(+rb)
r82
314}}}{{{#!if rb=rb.toString()
r104
315}}}{{{#!if ps=true
316}}}}}}
r76
317정리과정을 끝냈으면 ru를 string으로 변환합니다.
318{{{#!if this.ru=ru.toString()
319}}}
320-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우가 된다면 ru 문자열 앞에 "-"를 붙입니다.
321{{{#!if +ru==0
322{{{#!if ru="-"+ru
323}}}}}}
324}}}
325여기까지가 소수점 아래 자릿수 숫자들의 계산과정입니다.
326}}}
r71
327
r94
328a와 b 모두 정수인 경우 ap, bp는 모두 0이 되므로 ru만을 그대로 문자열로 바꾸면 되며 소수점 아래(rb)는 표기해야 할 필요가 없으므로 rb="", (소수점 아래 자릿수)rp=0을 반환합니다.
329{{{#!if (ap==0)&&(bp==0)
330{{{#!if this.ru=ru.toString(), rb="", rp=0+0
331}}}}}}
332
r95
333rb==0인 경우 rb="", rp=0을 반환합니다.
334{{{#!if +rb==0
335{{{#!if rb="", rp=0+0
336}}}}}}
337
r99
338이제 rb=""이 아닌 경우 소수점 아래 숫자 정리를 합니다.
339rp를 rb의 문자열 길이로 다시 정의합니다.
r97
340{{{#!if rb!=""
341{{{#!if this.rp=rb.length
r103
342}}}
r97
343
r99
344+"000100"을 숫자로 바꾸면 100이 되는 문제가 있습니다. 이처럼 소수점 아래 자릿수를 연산한 결과를 문자열로 바꿨을 때 기존 소수점 아래 자릿수보다 작은 길이가 나오면 앞쪽에 0을 보충합니다.
345앞에서 ap,bp를 똑같이 맞췄으므로 ap를 가져옵니다. 자릿수가 모자랄 경우 0을 하나씩 보충합니다.
346{{{#!if rp<ap
r163
347{{{#!if rb="000000000000000000".substr(0,ap-rp)+rb
r99
348}}}}}}
349
350앞에 0을 채웠다면 이제, 소수점 아래로 나오는 숫자를 보고 마지막에서부터 0이 나오면 한 자리씩 지우는 과정을 시작합니다.
351
r164
352여기까지가 덧셈 또는 뺄셈연산의 계산과정이며 과정은 이후 rb 정리 과정으로 넘어갑니다.
r166
353}}}}}}
r76
354
r186
355{{{#!if (f=="*")||(f=="/")
356곱셈 및 나눗셈 연산과정을 봅니다.
r64
35718자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
358다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
r120
359
r159
360음수가 될 경우 소수점 윗부분 문자열은 "-" 기호가 붙으므로, 이것을 이용한 조건문을 하나 만들어 a와 b 둘의 부호가 서로 다를 경우 (a만 음수이거나 b가 음수일 경우) 계산 결과에 부호를 표시할 수 있게 만듭니다.
361{{{#!if (au[0]==45)^(bu[0]==45)
362{{{#!if ns="-"
363}}}}}}
r126
364a 또는 b가 음수가 될 경우 소수점 윗부분 문자열인 au 또는 bu에서 마이너스(-)를 제거합니다.
365{{{#!if au[0]==45
366{{{#!if au=au.substr(1,ad-1)
367}}}}}}
368{{{#!if bu[0]==45
369{{{#!if bu=bu.substr(1,bd-1)
370}}}}}}
371
r206
372그 다음 --앞자리에 0만 여러 개 적어놓고 장난치는 사람이 있을까봐-- au를 값으로 바꾼 다음 다시 문자열로 변환하여 앞자리에 있는 0들을 모두 삭제합니다. bu도 그렇게 둡니다.
373{{{#!if au=+au, au=au.toString(), bu=+bu, bu=bu.toString()
374}}}
375
r207
376
r186
377a 또는 b값이 0이 되려면 au, ab 둘 다 0이 되거나 bu, bb 둘 다 0이 되어야 합니다. a 또는 b 값이 0일 경우 당연히 음수 부호가 표시되지 않습니다.
r174
378{{{#!if ((+au==0)&&(+ab==0))||((+bu==0)&&(+bb==0))
r190
379곱셈에서 0을 곱하면 0이 되므로, 곱셈의 경우 a 또는 b가 0이 될 때 계산 결과에 0을 반환합니다.
380{{{#!if f=="*"
r159
381{{{#!if rs="", ru="0", rb="", ri="", rp=0, ns=""
r133
382}}}}}}
r190
383나눗셈에서 나누는 수(b)가 0이 될 경우 오류를 반환하고 ps=true를 걸어 나눗셈 연산이 되지 않게 만듭니다.
384{{{#!if f=="/"
385{{{#!if ((+bu==0)&&(+bb==0))
386error code 03 번 : 0으로 나눌 수 없습니다.
387{{{#!if eb=03, ps=true
388}}}}}}
389나누는 수가 0이 아니면서 나눌 대상이 0이 될 경우 곱셈에서 0을 곱하는 것처럼 계산 결과에 0을 반환합니다.
390{{{#!if ((+au==0)&&(+ab==0))&&((+bu!=0)||(+bb!=0))
391{{{#!if rs="", ru="0", rb="", ri="", rp=0, ns=""
392}}}}}}
r224
393}}}}}}
r198
394곱셈과 나눗셈에서 a와 b 모두 0이 아닌 경우를 봅니다.
r133
395{{{#!if ((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
396
r203
397{{{#!if f=="*"
398곱셈계산에서 18자리씩 곱셈을 할 수 있도록 입력했던 a와 b의 문자열을 확장할 것입니다.
r198
399
r124
400a와 b 각각 소수점 윗자리와 소수점 아래자리의 문자열의 빈 공간을 0으로 채워 18자로 만듭니다.
401소수점 윗자리는 왼쪽에서 0을 채워나갑니다.
r173
402{{{#!if au = "000000000000000000" + au
r172
403+18자}}}{{{#!if au=au.substr(au.length-18,18)
r145
404}}}
r173
405{{{#!if bu = "000000000000000000" + bu
r172
406+18자}}}{{{#!if bu=bu.substr(bu.length-18,18)
r145
407}}}
r124
408
409소수점 아래자리는 오른쪽에서 0을 채웁니다. (ap, bp값은 보존됩니다.)
r145
410{{{#!if ab += "000000000000000000"
411+18자}}}{{{#!if ab=ab.substr(0,18)
412}}}
413{{{#!if bb += "000000000000000000"
414+18자}}}{{{#!if bb=bb.substr(0,18)
r191
415}}}}}}
r203
416
417{{{#!if f=="/"
r204
418나눗셈은 소수점 위 18번째 자리부터 내려가면서 처음으로 0이 아닌 숫자가 있으면 그 숫자가 처음 숫자가 되도록 숫자를 왼쪽으로 밀어두려고 합니다. 그 다음 오른쪽을 0으로 채웁니다.
r206
419au를 왼쪽으로 밀 경우 남게 되는 자릿수를 변수 tu로 둡니다. (후술할 아래 곱셈연산과 겹치지 않습니다.)
420{{{#!if tu=18-au.length, au=au+ab.substr(0,tu)+"000000000000000000", ab=ab.substr(tu)+"000000000000000000", au=au.substr(0,18), ab=ab.substr(0,18)
r203
421}}}
r206
422{{{#!if tu=18-bu.length, bu=bu+bb.substr(0,tu)+"000000000000000000", bb=bb.substr(tu)+"000000000000000000", bu=bu.substr(0,18), bb=bb.substr(0,18)
r203
423}}}
r207
424
r203
425}}}
r204
426}}}
r190
427여기까지 곱셈 또는 나눗셈에서 숫자를 초기화하는 과정입니다.
r224
428}}}
r133
429
r190
430a와 b 모두 0이 아닌 경우에서 곱셈을 연산하는 과정입니다.
431{{{#!if (f=="*")&&((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
r149
432곱셈은 18자리를 끊어서 계산합니다. 소수점 아래 18자리의 아래인 제19~36번 자리를 ri로 둡니다. 소수점 위 19~36번째 자리는 rs로 두어 ri, rb, ru, rs 순으로 계산합니다.
r204
433소수점 위 18자리, 소수점 아래 18자리인 두 수를 곱하면 해당하는 자리별로 곱셈을 할 때 최대 (18+18)**2=1296회를 곱해야 합니다.
r135
434
r147
435앞으로 있을 계산은 다음과 같습니다.
r135
436 * ri를 더했더니 ri가 19자리 숫자로 넘치면 넘친 앞의 1자리를 rb로 넘깁니다.
r147
437 * rb가 19자리로 넘쳤다면 넘친 앞의 1자리를 ru로 넘깁니다.
438 * ru가 19자리로 넘친다면 넘친 앞의 1자리를 rs로 넘깁니다.
r135
439(rs는 상용로그로 보았을 때 log a<18, log b<18 에서 log (a*b) = log a + log b < 36이므로 19자리로 넘치지 않습니다.)
440문자열로 바꾸고 문자열을 쪼갠 다음 숫자로 바꾸는 과정입니다. 이를 if로 바꾸면 다음과 같습니다.
r149
441{{{#!if false
r135
442{{{#!if ri=ri.toString(), ri.length==19
443{{{#if rb=(+rb)+(+ri.substr(0,1)), ri=(+ri.substr(1,18))
444}}}}}}
445{{{#!if rb=rb.toString(), rb.length==19
446{{{#if ru=(+ru)+(+rb.substr(0,1)), rb=(+rb.substr(1,18))
447}}}}}}
448{{{#!if ru=ru.toString(), ru.length==19
449{{{#if rs=(+rs)+(+ru.substr(0,1)), ru=(+ru.substr(1,18))
450}}}}}}
r149
451}}}
r151
452변수 tv, tw, i, ps를 가져옵니다. tw는 0, tv는 1, i는 0, ps는 false으로 초기화 된 채로 있습니다. 연산 과정 중간중간에 마지막 자릿수를 보정하고자 10씩 곱하게 됩니다. ri에서 최대 18자리에서 1자리 수를 곱하면 19자리가 될 수 있으므로 곱셈할 때마다 19자리로 넘칠때마다 넘치는 숫자는 rb로 넘깁니다.
r153
453ri부분을 합산합니다. ab*bb 의 절반을 처리합니다. (자릿수끼리 대입했을 때 처리되는 부분이 먼저 입력한 절반이 나중에 입력하는 절반보다 더 많지만, 편의상 절반이라고 적습니다.)
r149
454## for i=0 to 17
r151
455{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
456}}}{{{#!if tw=tw.toString(), tw.length==19
r150
457{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
458}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
459{{{#!if ri=ri+(+tw)
r150
460}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
461{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
462}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r150
463{{{#!if ri=(+ri)
r222
464}}}}}}{{{#!if i+=1, tv*=10, ps=false
r149
465}}}
r151
466## i=1
467{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
468}}}{{{#!if tw=tw.toString(), tw.length==19
r151
469{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
470}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
471{{{#!if ri=ri+(+tw)
r151
472}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
473{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
474}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
475{{{#!if ri=(+ri)
r222
476}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
477}}}
478## i=2
479{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
480}}}{{{#!if tw=tw.toString(), tw.length==19
r151
481{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
482}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
483{{{#!if ri=ri+(+tw)
r151
484}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
485{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
486}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
487{{{#!if ri=(+ri)
r222
488}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
489}}}
490## i=3
491{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
492}}}{{{#!if tw=tw.toString(), tw.length==19
r151
493{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
494}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
495{{{#!if ri=ri+(+tw)
r151
496}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
497{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
498}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
499{{{#!if ri=(+ri)
r222
500}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
501}}}
502## i=4
503{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
504}}}{{{#!if tw=tw.toString(), tw.length==19
r151
505{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
506}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
507{{{#!if ri=ri+(+tw)
r151
508}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
509{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
510}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
511{{{#!if ri=(+ri)
r222
512}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
513}}}
514## i=5
515{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
516}}}{{{#!if tw=tw.toString(), tw.length==19
r151
517{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
518}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
519{{{#!if ri=ri+(+tw)
r151
520}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
521{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
522}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
523{{{#!if ri=(+ri)
r222
524}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
525}}}
526## i=6
527{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
528}}}{{{#!if tw=tw.toString(), tw.length==19
r151
529{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
530}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
531{{{#!if ri=ri+(+tw)
r151
532}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
533{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
534}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
535{{{#!if ri=(+ri)
r222
536}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
537}}}
538## i=7
539{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
540}}}{{{#!if tw=tw.toString(), tw.length==19
r151
541{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
542}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
543{{{#!if ri=ri+(+tw)
r151
544}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
545{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
546}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
547{{{#!if ri=(+ri)
r222
548}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
549}}}
550## i=8
551{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
552}}}{{{#!if tw=tw.toString(), tw.length==19
r151
553{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
554}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
555{{{#!if ri=ri+(+tw)
r151
556}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
557{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
558}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
559{{{#!if ri=(+ri)
r222
560}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
561}}}
562## i=9
563{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
564}}}{{{#!if tw=tw.toString(), tw.length==19
r151
565{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
566}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
567{{{#!if ri=ri+(+tw)
r151
568}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
569{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
570}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
571{{{#!if ri=(+ri)
r222
572}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
573}}}
574## i=10
575{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
576}}}{{{#!if tw=tw.toString(), tw.length==19
r151
577{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
578}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
579{{{#!if ri=ri+(+tw)
r151
580}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
581{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
582}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
583{{{#!if ri=(+ri)
r222
584}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
585}}}
586## i=11
587{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
588}}}{{{#!if tw=tw.toString(), tw.length==19
r151
589{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
590}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
591{{{#!if ri=ri+(+tw)
r151
592}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
593{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
594}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
595{{{#!if ri=(+ri)
r222
596}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
597}}}
598## i=12
599{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
600}}}{{{#!if tw=tw.toString(), tw.length==19
r151
601{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
602}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
603{{{#!if ri=ri+(+tw)
r151
604}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
605{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
606}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
607{{{#!if ri=(+ri)
r222
608}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
609}}}
610## i=13
611{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
612}}}{{{#!if tw=tw.toString(), tw.length==19
r151
613{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
614}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
615{{{#!if ri=ri+(+tw)
r151
616}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
617{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
618}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
619{{{#!if ri=(+ri)
r222
620}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
621}}}
622## i=14
623{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
624}}}{{{#!if tw=tw.toString(), tw.length==19
r151
625{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
626}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
627{{{#!if ri=ri+(+tw)
r151
628}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
629{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
630}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
631{{{#!if ri=(+ri)
r222
632}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
633}}}
634## i=15
635{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
636}}}{{{#!if tw=tw.toString(), tw.length==19
r151
637{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
638}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
639{{{#!if ri=ri+(+tw)
r151
640}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
641{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
642}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
643{{{#!if ri=(+ri)
r222
644}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
645}}}
646## i=16
647{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
648}}}{{{#!if tw=tw.toString(), tw.length==19
r151
649{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
650}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
651{{{#!if ri=ri+(+tw)
r151
652}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
653{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
654}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
655{{{#!if ri=(+ri)
r222
656}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
657}}}
658## i=17
659{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
660}}}{{{#!if tw=tw.toString(), tw.length==19
r151
661{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r181
662}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r156
663{{{#!if ri=ri+(+tw)
r151
664}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
665{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r156
666}}}}}}{{{#!if (ri.length<=18)&&(ps==false)
r151
667{{{#!if ri=(+ri)
668}}}}}}
r134
669
r151
670##rb
r184
671rb부분을 합산합니다. substr(-1,0)은 빈 문자열 값이 나옵니다. (ab*bb의 나머지 절반 + au*bb의 절반), ab*bu의 절반을 처리합니다. i, tv, ps를 다시 초기화하고 시작합니다.
r151
672{{{#!if i=0+0, tv=1, ps=false
673}}}
674##for i=0 to 17
r185
675{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
676}}}{{{#!if tw=tw.toString(), tw.length==19
r152
677{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
678}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
679{{{#!if rb=rb+(+tw)
r152
680}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
681{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
682}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r152
683{{{#!if rb=(+rb)
684}}}}}}
r176
685{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
686}}}{{{#!if tw=tw.toString(), tw.length==19
r152
687{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
688}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
689{{{#!if rb=rb+(+tw)
r152
690}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
691{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
692}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r152
693{{{#!if rb=(+rb)
r222
694}}}}}}{{{#!if i+=1, tv*=10, ps=false
r152
695}}}
r153
696## i=1
r185
697{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
698}}}{{{#!if tw=tw.toString(), tw.length==19
r153
699{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
700}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
701{{{#!if rb=rb+(+tw)
r153
702}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
703{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
704}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
705{{{#!if rb=(+rb)
706}}}}}}
r176
707{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
708}}}{{{#!if tw=tw.toString(), tw.length==19
r153
709{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
710}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
711{{{#!if rb=rb+(+tw)
r153
712}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
713{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
714}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
715{{{#!if rb=(+rb)
r222
716}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
717}}}
718## i=2
r185
719{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
720}}}{{{#!if tw=tw.toString(), tw.length==19
r153
721{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
722}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
723{{{#!if rb=rb+(+tw)
r153
724}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
725{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
726}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
727{{{#!if rb=(+rb)
728}}}}}}
r176
729{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
730}}}{{{#!if tw=tw.toString(), tw.length==19
r153
731{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
732}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
733{{{#!if rb=rb+(+tw)
r153
734}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
735{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
736}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
737{{{#!if rb=(+rb)
r222
738}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
739}}}
740## i=3
r185
741{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
742}}}{{{#!if tw=tw.toString(), tw.length==19
r153
743{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
744}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
745{{{#!if rb=rb+(+tw)
r153
746}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
747{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
748}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
749{{{#!if rb=(+rb)
750}}}}}}
r176
751{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
752}}}{{{#!if tw=tw.toString(), tw.length==19
r153
753{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
754}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
755{{{#!if rb=rb+(+tw)
r153
756}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
757{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
758}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
759{{{#!if rb=(+rb)
r222
760}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
761}}}
762## i=4
r185
763{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
764}}}{{{#!if tw=tw.toString(), tw.length==19
r153
765{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
766}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
767{{{#!if rb=rb+(+tw)
r153
768}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
769{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
770}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
771{{{#!if rb=(+rb)
772}}}}}}
r176
773{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
774}}}{{{#!if tw=tw.toString(), tw.length==19
r153
775{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
776}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
777{{{#!if rb=rb+(+tw)
r153
778}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
779{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
780}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
781{{{#!if rb=(+rb)
r222
782}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
783}}}
784## i=5
r185
785{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
786}}}{{{#!if tw=tw.toString(), tw.length==19
r153
787{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
788}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
789{{{#!if rb=rb+(+tw)
r153
790}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
791{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
792}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
793{{{#!if rb=(+rb)
794}}}}}}
r176
795{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
796}}}{{{#!if tw=tw.toString(), tw.length==19
r153
797{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
798}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
799{{{#!if rb=rb+(+tw)
r153
800}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
801{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
802}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
803{{{#!if rb=(+rb)
r222
804}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
805}}}
806## i=6
r185
807{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
808}}}{{{#!if tw=tw.toString(), tw.length==19
r153
809{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
810}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
811{{{#!if rb=rb+(+tw)
r153
812}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
813{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
814}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
815{{{#!if rb=(+rb)
816}}}}}}
r176
817{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
818}}}{{{#!if tw=tw.toString(), tw.length==19
r153
819{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
820}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
821{{{#!if rb=rb+(+tw)
r153
822}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
823{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
824}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
825{{{#!if rb=(+rb)
r222
826}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
827}}}
828## i=7
r185
829{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
830}}}{{{#!if tw=tw.toString(), tw.length==19
r153
831{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
832}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
833{{{#!if rb=rb+(+tw)
r153
834}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
835{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
836}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
837{{{#!if rb=(+rb)
838}}}}}}
r176
839{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
840}}}{{{#!if tw=tw.toString(), tw.length==19
r153
841{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
842}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
843{{{#!if rb=rb+(+tw)
r153
844}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
845{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
846}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
847{{{#!if rb=(+rb)
r222
848}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
849}}}
850## i=8
r185
851{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
852}}}{{{#!if tw=tw.toString(), tw.length==19
r153
853{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
854}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
855{{{#!if rb=rb+(+tw)
r153
856}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
857{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
858}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
859{{{#!if rb=(+rb)
860}}}}}}
r176
861{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
862}}}{{{#!if tw=tw.toString(), tw.length==19
r153
863{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
864}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
865{{{#!if rb=rb+(+tw)
r153
866}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
867{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
868}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
869{{{#!if rb=(+rb)
r222
870}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
871}}}
872## i=9
r185
873{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
874}}}{{{#!if tw=tw.toString(), tw.length==19
r153
875{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
876}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
877{{{#!if rb=rb+(+tw)
r153
878}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
879{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
880}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
881{{{#!if rb=(+rb)
882}}}}}}
r176
883{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
884}}}{{{#!if tw=tw.toString(), tw.length==19
r153
885{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
886}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
887{{{#!if rb=rb+(+tw)
r153
888}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
889{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
890}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
891{{{#!if rb=(+rb)
r222
892}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
893}}}
894## i=10
r185
895{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
896}}}{{{#!if tw=tw.toString(), tw.length==19
r153
897{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
898}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
899{{{#!if rb=rb+(+tw)
r153
900}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
901{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
902}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
903{{{#!if rb=(+rb)
904}}}}}}
r176
905{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
906}}}{{{#!if tw=tw.toString(), tw.length==19
r153
907{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
908}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
909{{{#!if rb=rb+(+tw)
r153
910}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
911{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
912}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
913{{{#!if rb=(+rb)
r222
914}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
915}}}
916## i=11
r185
917{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
918}}}{{{#!if tw=tw.toString(), tw.length==19
r153
919{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
920}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
921{{{#!if rb=rb+(+tw)
r153
922}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
923{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
924}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
925{{{#!if rb=(+rb)
926}}}}}}
r176
927{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
928}}}{{{#!if tw=tw.toString(), tw.length==19
r153
929{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
930}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
931{{{#!if rb=rb+(+tw)
r153
932}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
933{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
934}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
935{{{#!if rb=(+rb)
r222
936}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
937}}}
938## i=12
r185
939{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
940}}}{{{#!if tw=tw.toString(), tw.length==19
r153
941{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
942}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
943{{{#!if rb=rb+(+tw)
r153
944}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
945{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
946}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
947{{{#!if rb=(+rb)
948}}}}}}
r176
949{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
950}}}{{{#!if tw=tw.toString(), tw.length==19
r153
951{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
952}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
953{{{#!if rb=rb+(+tw)
r153
954}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
955{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
956}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
957{{{#!if rb=(+rb)
r222
958}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
959}}}
960## i=13
r185
961{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
962}}}{{{#!if tw=tw.toString(), tw.length==19
r153
963{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
964}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
965{{{#!if rb=rb+(+tw)
r153
966}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
967{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
968}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
969{{{#!if rb=(+rb)
970}}}}}}
r176
971{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
972}}}{{{#!if tw=tw.toString(), tw.length==19
r153
973{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
974}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
975{{{#!if rb=rb+(+tw)
r153
976}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
977{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
978}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
979{{{#!if rb=(+rb)
r222
980}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
981}}}
982## i=14
r185
983{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
984}}}{{{#!if tw=tw.toString(), tw.length==19
r153
985{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
986}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
987{{{#!if rb=rb+(+tw)
r153
988}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
989{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
990}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
991{{{#!if rb=(+rb)
992}}}}}}
r176
993{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
994}}}{{{#!if tw=tw.toString(), tw.length==19
r153
995{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
996}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
997{{{#!if rb=rb+(+tw)
r153
998}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
999{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1000}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1001{{{#!if rb=(+rb)
r222
1002}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1003}}}
1004## i=15
r185
1005{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1006}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1007{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
1008}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1009{{{#!if rb=rb+(+tw)
r153
1010}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1011{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1012}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1013{{{#!if rb=(+rb)
1014}}}}}}
r176
1015{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1016}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1017{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
1018}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1019{{{#!if rb=rb+(+tw)
r153
1020}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1021{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1022}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1023{{{#!if rb=(+rb)
r222
1024}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1025}}}
1026## i=16
r185
1027{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1028}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1029{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
1030}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1031{{{#!if rb=rb+(+tw)
r153
1032}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1033{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1034}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1035{{{#!if rb=(+rb)
1036}}}}}}
r176
1037{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1038}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1039{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
1040}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1041{{{#!if rb=rb+(+tw)
r153
1042}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1043{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1044}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1045{{{#!if rb=(+rb)
r222
1046}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1047}}}
1048## i=17
r185
1049{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1050}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1051{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
1052}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1053{{{#!if rb=rb+(+tw)
r153
1054}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1055{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1056}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1057{{{#!if rb=(+rb)
1058}}}}}}
r176
1059{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1060}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1061{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r181
1062}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1063{{{#!if rb=rb+(+tw)
r153
1064}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1065{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r155
1066}}}}}}{{{#!if (rb.length<=18)&&(ps==false)
r153
1067{{{#!if rb=(+rb)
r222
1068}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1069}}}
r134
1070
r153
1071##ru
r184
1072ru부분을 합산합니다. substr(-1,0)은 빈 문자열 값이 나옵니다. (ab*bu의 나머지 절반 + au*bu의 절반), au*bb의 나머지 절반을 처리합니다. i, tv, ps를 다시 초기화하고 시작합니다.
r153
1073{{{#!if i=0+0, tv=1, ps=false
1074}}}
r155
1075##for i=0 to 17
r185
1076{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1077}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1078{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1079}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1080{{{#!if ru=ru+(+tw)
1081}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1082{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1083}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1084{{{#!if ru=(+ru)
1085}}}}}}
r184
1086{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1087}}}{{{#!if ru.length==19
r155
1088{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1089}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1090{{{#!if ru=(+ru)
r222
1091}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1092}}}
1093## i=1
r185
1094{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1095}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1096{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1097}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1098{{{#!if ru=ru+(+tw)
1099}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1100{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1101}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1102{{{#!if ru=(+ru)
1103}}}}}}
r184
1104{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1105}}}{{{#!if ru.length==19
r155
1106{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1107}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1108{{{#!if ru=(+ru)
r222
1109}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1110}}}
1111## i=2
r185
1112{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1113}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1114{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1115}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1116{{{#!if ru=ru+(+tw)
1117}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1118{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1119}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1120{{{#!if ru=(+ru)
1121}}}}}}
r184
1122{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1123}}}{{{#!if ru.length==19
r155
1124{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1125}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1126{{{#!if ru=(+ru)
r222
1127}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1128}}}
1129## i=3
r185
1130{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1131}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1132{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1133}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1134{{{#!if ru=ru+(+tw)
1135}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1136{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1137}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1138{{{#!if ru=(+ru)
1139}}}}}}
r184
1140{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1141}}}{{{#!if ru.length==19
r155
1142{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1143}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1144{{{#!if ru=(+ru)
r222
1145}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1146}}}
1147## i=4
r185
1148{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1149}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1150{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1151}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1152{{{#!if ru=ru+(+tw)
1153}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1154{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1155}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1156{{{#!if ru=(+ru)
1157}}}}}}
r184
1158{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1159}}}{{{#!if ru.length==19
r155
1160{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1161}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1162{{{#!if ru=(+ru)
r222
1163}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1164}}}
1165## i=5
r185
1166{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1167}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1168{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1169}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1170{{{#!if ru=ru+(+tw)
1171}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1172{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1173}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1174{{{#!if ru=(+ru)
1175}}}}}}
r184
1176{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1177}}}{{{#!if ru.length==19
r155
1178{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1179}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1180{{{#!if ru=(+ru)
r222
1181}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1182}}}
1183## i=6
r185
1184{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1185}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1186{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1187}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1188{{{#!if ru=ru+(+tw)
1189}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1190{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1191}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1192{{{#!if ru=(+ru)
1193}}}}}}
r184
1194{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1195}}}{{{#!if ru.length==19
r155
1196{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1197}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1198{{{#!if ru=(+ru)
r222
1199}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1200}}}
1201## i=7
r185
1202{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1203}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1204{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1205}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1206{{{#!if ru=ru+(+tw)
1207}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1208{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1209}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1210{{{#!if ru=(+ru)
1211}}}}}}
r184
1212{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1213}}}{{{#!if ru.length==19
r155
1214{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1215}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1216{{{#!if ru=(+ru)
r222
1217}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1218}}}
1219## i=8
r185
1220{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1221}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1222{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1223}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1224{{{#!if ru=ru+(+tw)
1225}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1226{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1227}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1228{{{#!if ru=(+ru)
1229}}}}}}
r184
1230{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1231}}}{{{#!if ru.length==19
r155
1232{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1233}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1234{{{#!if ru=(+ru)
r222
1235}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1236}}}
1237## i=9
r185
1238{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1239}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1240{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1241}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1242{{{#!if ru=ru+(+tw)
1243}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1244{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1245}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1246{{{#!if ru=(+ru)
1247}}}}}}
r184
1248{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1249}}}{{{#!if ru.length==19
r155
1250{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1251}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1252{{{#!if ru=(+ru)
r222
1253}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1254}}}
1255## i=10
r185
1256{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1257}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1258{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1259}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1260{{{#!if ru=ru+(+tw)
1261}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1262{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1263}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1264{{{#!if ru=(+ru)
1265}}}}}}
r184
1266{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1267}}}{{{#!if ru.length==19
r155
1268{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1269}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1270{{{#!if ru=(+ru)
r222
1271}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1272}}}
1273## i=11
r185
1274{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1275}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1276{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1277}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1278{{{#!if ru=ru+(+tw)
1279}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1280{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1281}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1282{{{#!if ru=(+ru)
1283}}}}}}
r184
1284{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1285}}}{{{#!if ru.length==19
r155
1286{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1287}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1288{{{#!if ru=(+ru)
r222
1289}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1290}}}
1291## i=12
r185
1292{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1293}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1294{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1295}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1296{{{#!if ru=ru+(+tw)
1297}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1298{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1299}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1300{{{#!if ru=(+ru)
1301}}}}}}
r184
1302{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1303}}}{{{#!if ru.length==19
r155
1304{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1305}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1306{{{#!if ru=(+ru)
r222
1307}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1308}}}
1309## i=13
r185
1310{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1311}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1312{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1313}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1314{{{#!if ru=ru+(+tw)
1315}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1316{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1317}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1318{{{#!if ru=(+ru)
1319}}}}}}
r184
1320{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1321}}}{{{#!if ru.length==19
r155
1322{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1323}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1324{{{#!if ru=(+ru)
r222
1325}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1326}}}
1327## i=14
r185
1328{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1329}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1330{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1331}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1332{{{#!if ru=ru+(+tw)
1333}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1334{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1335}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1336{{{#!if ru=(+ru)
1337}}}}}}
r184
1338{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1339}}}{{{#!if ru.length==19
r155
1340{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1341}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1342{{{#!if ru=(+ru)
r222
1343}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1344}}}
1345## i=15
r185
1346{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1347}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1348{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1349}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1350{{{#!if ru=ru+(+tw)
1351}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1352{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1353}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1354{{{#!if ru=(+ru)
1355}}}}}}
r184
1356{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1357}}}{{{#!if ru.length==19
r155
1358{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1359}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1360{{{#!if ru=(+ru)
r222
1361}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1362}}}
1363## i=16
r185
1364{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1365}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1366{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1367}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1368{{{#!if ru=ru+(+tw)
1369}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1370{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1371}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1372{{{#!if ru=(+ru)
1373}}}}}}
r184
1374{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1375}}}{{{#!if ru.length==19
r155
1376{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1377}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1378{{{#!if ru=(+ru)
r222
1379}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1380}}}
1381## i=17
r185
1382{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1383}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1384{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r181
1385}}}}}}{{{#!if (tw.length<=18)&&(ps==false)
r155
1386{{{#!if ru=ru+(+tw)
1387}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1388{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1389}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1390{{{#!if ru=(+ru)
1391}}}}}}
r184
1392{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1393}}}{{{#!if ru.length==19
r155
1394{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
1395}}}}}}{{{#!if (ru.length<=18)&&(ps==false)
1396{{{#!if ru=(+ru)
r222
1397}}}}}}{{{#!if i+=1, tv*=10, ps=false
r184
1398}}}
r156
1399##rs
1400rs부분을 합산합니다. au*bu의 나머지 절반을 처리합니다. i, tv, ps를 다시 초기화하고 시작합니다. 소수점 윗자리는 많아야 36자리이므로 rs에서 더 이상 넘치지 않습니다.
1401{{{#!if i=0+0, tv=1, ps=false
1402}}}
1403##for i=0 to 17
r184
1404{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1405}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1406}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1407}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1408}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1409}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1410}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1411}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1412}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1413}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
r156
1414}}}
r184
1415{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1416}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1417}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1418}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1419}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1420}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1421}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1422}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
r156
1423}}}
r190
1424여기까지가 곱셈에서 a*b 의 연산 과정이며 rb 정리 부분으로 넘어갑니다.
r164
1425}}}
1426
r194
1427a와 b 모두 0이 아닌 경우에서 나눗셈을 연산하는 과정입니다.
1428{{{#!if (f=="/")&&((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
1429
1430au, ab, bu, bb를 18자로 만들었으므로 36자리 정수의 나눗셈으로 봅니다.
1431a/b=(au+ab)/(bu+bb)=(+(au.substr(0,18)+ab.substr(0,18)))/(+(bu.substr(0,18)+bb.substr(0,18)))와 같습니다.
1432rp=36이 되면 마지막 자리 연산만 하고 중단할 수 있도록 진행합니다.
r196
1433## 범위 조절
r195
1434bu=0인 경우 rb에 18을 감소시킵니다.
r194
1435{{{#!if bu==0
r195
1436{{{#!if rb=rb-18
1437}}}}}}
r194
1438
r195
1439au=0인 경우 a/b=a*(10**18)/(b)*(10**18)을 이용하여 rb에 18을 증가시킵니다.
1440{{{#!if bu==0
1441{{{#!if rb=rb+18
1442}}}}}}
1443
r196
1444##b 자릿수 측정
1445
1446##rs 매기기
1447
1448##ru 매기기
1449
1450##rb 매기기
1451
1452##ri 매기기
r194
1453}}}
1454
r187
1455##ru 정리 부분
r164
1456먼저 ru를 문자열로 변환합니다. 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (곱한 값을 더했는데도) 0일 경우 rs를 빈 문자열로 바꿉니다. 곱셈과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다.
1457{{{#!if ru=ru.toString()
r171
1458}}}{{{#!if rs==0
r164
1459{{{#!if rs=""
r171
1460}}}}}}{{{#!if (f=="*")&&(rs>0)
r164
1461{{{#!if rs=rs.toString(), ru="000000000000000000"+ru, ru=ru.substr(ru.length-18, 18)
r171
1462}}}}}}
r156
1463
r187
1464#rb 정리 부분
r164
1465소수점 아래 마지막 문자의 번호는 (문자열 길이 - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다.
1466substr(0,0)으로 하면 ""이 됩니다.
1467
r187
1468곱셈연산이면서 ri가 빈 문자열이 아닐 경우 true를 주는 논리값으로 ps를 정의합니다.
1469{{{#!if ps=((f=="*")&&(ri>0))
1470}}}
1471소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
r179
1472이 때 ri와 rb가 모두 0일 경우 rb도 빈 문자열로 바꾸고 rp=0으로 둡니다.
1473{{{#!if ri==0
r164
1474{{{#!if ri=""
r179
1475}}}{{{#!if rb==0
1476{{{#!if rb="", rp=0
1477}}}}}}}}}
1478
r188
1479곱셈 과정에서 ri가 0보다 클 경우 rb를 문자열로 변환하고 rb, ri의 왼쪽을 0으로 채웁니다.
r187
1480{{{#!if ps
r188
1481{{{#!if rb=rb.toString(), ri=ri.toString(), rb="000000000000000000"+rb, rb=rb.substr(rb.length-18, 18), ri="000000000000000000"+ri, ri=ri.substr(ri.length-18, 18)
r171
1482}}}}}}
r164
1483
r188
1484ri가 비었고 rb가 0이 아닌 경우 rb를 문자열로 바꾼 다음 왼쪽을 0으로 채웁니다.
1485{{{#!if !ps&&(rb>0)
1486{{{#!if rb=rb.toString(), rb="000000000000000000"+rb, rb=rb.substr(rb.length-18, 18)
r179
1487}}}}}}
1488
r189
1489ps가 true이면 rp를 ri의 길이로, 그렇지 않고 rb만 0이 아닌경우 rp를 rb의 길이로 정의합니다.
r187
1490{{{#!if ps
r189
1491{{{#!if this.rp=ri.length
r187
1492}}}}}}{{{#!if !ps&&(rb!="")
r189
1493{{{#!if this.rp=rb.length
r160
1494}}}}}}
1495
r167
1496곱셈연산이면서 ri가 빈 문자열이 아닐 경우 ri의 오른쪽부터 붙은 "0"들을 모두 지웁니다, 그렇지 않을 경우 rb의 오른쪽에 붙은 "0"들을 모두 지웁니다,
1497{{{#!if ps
r223
1498{{{#!if (rp>9)&&(ri.substr(rp-9,9)=="000000000")
r167
1499{{{#!if this.ri=ri.substr(0,rp-9), rp=rp-9
1500}}}}}}
r223
1501{{{#!if (rp>4)&&(ri.substr(rp-4,4)=="0000")
r167
1502{{{#!if this.ri=ri.substr(0,rp-4), rp=rp-4
1503}}}}}}
r223
1504{{{#!if (rp>2)&&(ri.substr(rp-2,2)=="00")
r167
1505{{{#!if this.ri=ri.substr(0,rp-2), rp=rp-2
1506}}}}}}
r223
1507{{{#!if (rp>2)&&(ri.substr(rp-2,2)=="00")
r167
1508{{{#!if this.ri=ri.substr(0,rp-2), rp=rp-2
1509}}}}}}
r223
1510{{{#!if (rp>1)&&(ri.substr(rp-1,1)=="0")
r167
1511{{{#!if this.ri=ri.substr(0,rp-1), rp=rp-1
r187
1512}}}}}}}}}
r62
1513
r168
1514{{{#!if !ps
r223
1515{{{#!if (rp>9)&&(rb.substr(rp-9,9)=="000000000")
r168
1516{{{#!if this.rb=rb.substr(0,rp-9), rp=rp-9
r164
1517}}}}}}
r223
1518{{{#!if (rp>4)&&(rb.substr(rp-4,4)=="0000")
r168
1519{{{#!if this.rb=rb.substr(0,rp-4), rp=rp-4
r164
1520}}}}}}
r223
1521{{{#!if (rp>2)&&(rb.substr(rp-2,2)=="00")
r168
1522{{{#!if this.rb=rb.substr(0,rp-2), rp=rp-2
r164
1523}}}}}}
r223
1524{{{#!if (rp>2)&&(rb.substr(rp-2,2)=="00")
r168
1525{{{#!if this.rb=rb.substr(0,rp-2), rp=rp-2
r164
1526}}}}}}
r223
1527{{{#!if (rp>1)&&(rb.substr(rp-1,1)=="0")
r167
1528{{{#!if this.rb=rb.substr(0,rp-1), rp=rp-1
1529}}}}}}}}}
r188
1530
r189
153119~36번째 자리까지 계산한 경우 rp에 18을 더합니다.
1532{{{#!if ps
1533{{{#!if rp=rp+18
1534}}}}}}
r188
1535
r164
1536rb 정리를 이것으로 종료합니다.
1537
r216
1538##== 오류 코드 ==
1539error
15401 : 오버플로
15415 : 이중 소수점 표기
15426 : 소수점 윗부분 오류
15437 : 소수점 아랫부분 오류
1544
1545warning
15461 : 소수점 아래 입력한 자릿수가 너무 많음.
1547
1548##== 아래 출력 변수 설명 ==
r84
1549'''sa''' : searching a; '''sb''' : searching b; '''sf''' : searching f;
r111
1550'''rl''' : result string length to output; '''p''' : a point of string(s);
r85
1551ru는 계산결과에서 소수점 위 자리이므로, dot(.)이 나오지 않습니다.
r62
1552##여기까지 주석(주석 아님)
r224
1553}}}{{{#!wiki style="font-weight: 300; font-size: 20px;"
r83
1554{{{#!if this.sa=(this.a!="")&&(this.a!=null), this.sb=(this.b!="")&&(this.b!=null), this.sf=(this.f=='+')||(this.f=='-')||(this.f=='*')||(this.f=='/')
1555}}}{{{#!if !sa&&!sb&&!sf
r84
1556변수를 입력하세요...
r95
1557}}}{{{#!if !(sa&&sb&&sf)
1558({{{#!if !sa
r83
1559a{{{#!if !sb||!sf
1560, }}}}}}{{{#!if !sb
1561b{{{#!if !sf
1562, }}}}}}{{{#!if !sf
r95
1563f}}}를 입력하세요...)}}}{{{#!if sa&&sb&&sf
r112
1564{{{#!if (ea==0)&&(eb==0)
r77
1565{{{#!if as[0]!=45
r48
1566@a@}}}{{{#!if as[0]==45
r110
1567(@a@)}}} {{{#!if as.length>=20
r108
1568[br]}}}{{{#!if f=='+'
r62
1569+}}}{{{#!if f=="-"
1570-}}}{{{#!if f=="*"
1571*}}}{{{#!if f=="/"
r108
1572/}}} {{{#!if bs[0]!=45
r48
1573@b@}}}{{{#!if bs[0]==45
r110
1574(@b@)}}} {{{#!if (bs.length>=20)||(as.length+bs.length>=30)
r119
1575[br]}}}= {{{#!if rs!=""
r168
1576}}}{{{#!if (f=="*")||(f=="/")
1577@ns@{{{#!if rs!=""
r174
1578@rs@}}}}}}@ru@{{{#!if +rp>0
r98
1579##rb string, decimal point marking
r132
1580.@rb@{{{#!if ri!=""
r225
1581@ri@}}}}}}}}}}}}{{{#!if ((wa>0)||(wb>0))&&(ea==0)&&(eb==0)
r115
1582[br]{{{#!wiki style="display: inline; text-shadow: 1px 1px 2px gray; "
1583{{{#yellow 경고 : }}}}}}변수 {{{#!if wa==1
1584a{{{#!if wb==1
1585와 }}}}}}{{{#!if wb==1
1586b}}}의 소수점 아래 값이 너무 많습니다. 소수점 아래 19번째 자리부터는 계산하지 않습니다.
r170
1587}}}{{{#!if (ea>0)||(eb>0)
r112
1588{{{#!if (ea==1)||(eb==1)
r192
1589'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==1
r112
1590a{{{#!if eb==1
1591와 }}}}}}{{{#!if eb==1
r219
1592b}}}에 너무 많은 값을 입력했습니다. {{{#gray (오버플로)}}}[br]}}}{{{#!if eb==3
1593'''{{{#orangered [오류]}}}''' 0으로 나눌 수 없습니다.[br]}}}{{{#!if (ea==5)||(eb==5)
r216
1594'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==5
1595a{{{#!if eb==5
1596와 }}}}}}{{{#!if eb==5
r219
1597b}}}에 소수점이 2개 이상 입력되어 있습니다. {{{#gray (입력 오류)}}}[br]}}}{{{#!if (ea==6)||(eb==6)
r216
1598'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==6
1599a의 소수점 윗자리{{{#!if eb==6
1600와 }}}}}}{{{#!if eb==6
r219
1601b의 소수점 윗자리}}}에 올바르지 않은 문구가 입력되어 있습니다. {{{#gray (입력 오류)}}}[br]}}}{{{#!if (ea==7)||(eb==7)
r216
1602'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==7
1603a의 소수점 아랫자리{{{#!if eb==7
1604와 }}}}}}{{{#!if eb==7
r219
1605b의 소수점 아랫자리}}}에 올바르지 않은 문구가 입력되어 있습니다. {{{#gray (입력 오류)}}}[br]}}}}}}}}}