r122
r43
1[[분류:냥]][Include(틀:상세 내용, 설명대상=원본, 문서명=틀\:계산기)]
r44
2== 2-2 ==
r102
3{{{#!wiki style="display: none;"
4##디버그용 if 문법
r98

(r96으로 되돌림)
5{{{#!if a= ,b= ,f=
r96
6}}}
r95
7{{{#!wiki style="display: none; display: inline;"
r59
8##초기화
r55
9'''as''' : "a" value to string; '''bs''' : "b" value to string;
r56
10'''al''' : "a" string length (integer); '''bl''' : "b" string length (integer)
11'''ad''' : "a" decimal point (integer); '''bd''' : "b" decimal point (integer);
12'''au''' : --gold-- "a" upper value (string→integer); '''bu''' : "b" upper value (string→integer);
13'''ab''' : "a" below value (string→integer); '''bb''' : "b" below value (string→integer);
r55
14'''ap''' : "a" # of places of decimal (integer); '''bp''' : "b" # of places of decimal (integer);
150.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
r78
16'''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string);
17'''rp''' : "result" # of places of decimal (integer);
r118
18'''i''' : index; '''tv''' temporary value; '''ps''' : pass (logical);
r119
19'''ea''' : error about "a"; '''eb''' : error about "b"; '''wa''' : warning about "a" ; '''wb''' : warning about "b" ;
20{{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0, this.rp=0+0, this.i=0+0, this.tv=1, this.ea=0+0, this.eb=0+0, this.wa=0+0, this.wb=0+0
r53
21}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
22}}}{{{#!if ad!=-1
r56
23소수점이 발견되는 자리 번호가 ad이므로 ad+1번에 해당되는 자리부터 끝까지 표기.
r98

(r96으로 되돌림)
24{{{#!if this.au=as.substr(0,ad), this.ab=as.substr(ad+1, al-ad-1), this.ap=ab.length
r64
25}}}{{{#!if (au=="")||(au=="-")||(au=="+")
r58
26.12345 식으로 또는 -.12345 식으로 기입할 경우 upper 값을 0으로 부여함.
r62
27{{{#!if au="0"
r56
28}}}}}}}}}{{{#!if ad==-1
r53
29{{{#!if this.au=as, ab="", ap=0+0
30}}}}}}{{{#!if bd!=-1
r99
31{{{#!if this.bu=bs.substr(0,bd), this.bb=bs.substr(bd+1, bl-bd-1), this.bp=bb.length
r64
32}}}{{{#!if (bu=="")||(bu=="-")||(bu=="+")
r62
33{{{#!if bu="0"
r53
34}}}}}}}}}{{{#!if bd==-1
35{{{#!if this.bu=bs, bb="", bp=0+0
r51
36}}}}}}
r59
37
r61
38##유효성 검사.
39the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기. 소수점 위 최대 18자리, 소수점 아래 최대 18자리
r120
40{{{#!if ((au[0]!=45)&&(au.length>=19))||((au[0]==45)&&(au.length>=20))
r61
41error code of a 01번 : 오버플로
r62
42{{{#!if ea=1
r61
43}}}}}}
r120
44{{{#!if ab.length>=19
r64
45warning code of a 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다.
r62
46{{{#!if wa=1, ab=ab.substr(0,18)
47}}}}}}
r60
48
r120
49{{{#!if ((bu[0]!=45)&&(bu.length>=19))||((bu[0]==45)&&(bu.length>=20))
r62
50error code of b 01번 : 오버플로
51{{{#!if eb=01
52}}}}}}
r120
53{{{#!if bb.length>=19
r65
54warning code of b 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다.
r63
55{{{#!if wb=01, bb=bb.substr(0,18)
r62
56}}}}}}
57
r64
58##반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.
59error code 02 번 : 입력한 변수는 숫자로 읽을 수 없습니다. 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요.
r71
60
61덧셈과 뺄셈 계산과정을 적어봅니다.
62{{{#!if (f=="+")||(f=="-")
r81
63
64a과 b의 소수점 윗부분은 정수이므로 쉽게 계산할 수 있습니다.
65{{{#!if f=="+"
66{{{#!if ru=(+au)+(+bu)
67}}}}}}
68{{{#!if f=="-"
69{{{#!if ru=(+au)-(+bu)
70}}}}}}
r98

(r96으로 되돌림)
71
r81
72a와 b 모두가 정수이면 ad=a.indexOf("."), bd=b.indexOf(".") 모두 -1이고 ap==0, bp==0이 되며, 이런 경우에는 소수점 아래 자릿수를 검산할 필요가 없습니다. a와 b 중 소수점 아래 자릿수가 있는 수가 있을 때에만 소수점 윗자리의 계산값이 얼마가 나오느냐를 보면서 소수점 아래의 자릿수를 정리하는 과정이 의미가 있습니다.
73{{{#!if (ap>0)||(bp>0)
74만약 소수점 아래를 계산한다면 자릿수를 똑같이 맞춰야 의미가 있으므로, 자릿수가 다른 경우 자릿수가 같게 만드는 과정을 먼저 거칩니다.
r71
75{{{#!if ap>bp
r72
76이를테면 a의 소수점 자릿수가 b의 소수점 자릿수보다 많으면 b뒤에 0을 더 추가하는 방식으로 변경합니다. b 자체가 정수여도 앞에 (소수점이 없을 경우) 이미 bb="", bp=0+0으로 초기화했으므로 동작될 것입니다.
r71
77{{{#!if bp+=1, bb=bb+"0"
r72
78}}}}}}{{{#!if ap>bp
79{{{#!if bp+=1, bb=bb+"0"
80}}}}}}{{{#!if ap>bp
81{{{#!if bp+=1, bb=bb+"0"
82}}}}}}{{{#!if ap>bp
83{{{#!if bp+=1, bb=bb+"0"
84}}}}}}{{{#!if ap>bp
85{{{#!if bp+=1, bb=bb+"0"
r71
86}}}}}}
r72
87{{{#!if ap>bp
88{{{#!if bp+=1, bb=bb+"0"
89}}}}}}{{{#!if ap>bp
90{{{#!if bp+=1, bb=bb+"0"
91}}}}}}{{{#!if ap>bp
92{{{#!if bp+=1, bb=bb+"0"
93}}}}}}{{{#!if ap>bp
94{{{#!if bp+=1, bb=bb+"0"
95}}}}}}{{{#!if ap>bp
96{{{#!if bp+=1, bb=bb+"0"
97}}}}}}
98{{{#!if ap>bp
99{{{#!if bp+=1, bb=bb+"0"
100}}}}}}{{{#!if ap>bp
101{{{#!if bp+=1, bb=bb+"0"
102}}}}}}{{{#!if ap>bp
103{{{#!if bp+=1, bb=bb+"0"
104}}}}}}{{{#!if ap>bp
105{{{#!if bp+=1, bb=bb+"0"
106}}}}}}{{{#!if ap>bp
107{{{#!if bp+=1, bb=bb+"0"
108}}}}}}
109{{{#!if ap>bp
110{{{#!if bp+=1, bb=bb+"0"
111}}}}}}{{{#!if ap>bp
112{{{#!if bp+=1, bb=bb+"0"
113}}}}}}{{{#!if ap>bp
114{{{#!if bp+=1, bb=bb+"0"
115}}}}}}
r74
116소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18회.
r72
117
118반대로 b의 소수점 자릿수가 많은 경우도 있습니다.
119{{{#!if bp>ap
120{{{#!if ap+=1, ab=ab+"0"
121}}}}}}{{{#!if bp>ap
122{{{#!if ap+=1, ab=ab+"0"
123}}}}}}{{{#!if bp>ap
124{{{#!if ap+=1, ab=ab+"0"
125}}}}}}{{{#!if bp>ap
126{{{#!if ap+=1, ab=ab+"0"
127}}}}}}{{{#!if bp>ap
128{{{#!if ap+=1, ab=ab+"0"
129}}}}}}
130{{{#!if bp>ap
131{{{#!if ap+=1, ab=ab+"0"
132}}}}}}{{{#!if bp>ap
133{{{#!if ap+=1, ab=ab+"0"
134}}}}}}{{{#!if bp>ap
135{{{#!if ap+=1, ab=ab+"0"
136}}}}}}{{{#!if bp>ap
137{{{#!if ap+=1, ab=ab+"0"
138}}}}}}{{{#!if bp>ap
139{{{#!if ap+=1, ab=ab+"0"
140}}}}}}
141{{{#!if bp>ap
142{{{#!if ap+=1, ab=ab+"0"
143}}}}}}{{{#!if bp>ap
144{{{#!if ap+=1, ab=ab+"0"
145}}}}}}{{{#!if bp>ap
146{{{#!if ap+=1, ab=ab+"0"
147}}}}}}{{{#!if bp>ap
148{{{#!if ap+=1, ab=ab+"0"
149}}}}}}{{{#!if bp>ap
150{{{#!if ap+=1, ab=ab+"0"
151}}}}}}
152{{{#!if bp>ap
153{{{#!if ap+=1, ab=ab+"0"
154}}}}}}{{{#!if bp>ap
155{{{#!if ap+=1, ab=ab+"0"
156}}}}}}{{{#!if bp>ap
157{{{#!if ap+=1, ab=ab+"0"
158}}}}}}
r76
159위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다.
r71
160
r76
161a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다.
r73
162{{{#!if as[0]==45
163{{{#!if ab="-"+ab
164}}}}}}
r76
165마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다.
r73
166{{{#!if bs[0]==45
167{{{#!if bb="-"+bb
168}}}}}}
169
r81
170이때 rb를 계산합니다.
r70
171{{{#!if f=="+"
r81
172{{{#!if rb=(+ab)+(+bb)
r70
173}}}}}}
174{{{#!if f=="-"
r81
175{{{#!if rb=(+ab)-(+bb)
r70
176}}}}}}
r80
177
r74
178소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
r92
179이 때 rb가 0이 아닐 경우에만 문자열로 변환합니다.
180{{{#!if (+rb>0)||(+rb<0)
r74
181{{{#!if this.rb=rb.toString()
182}}}
r76
183문자열로 된 rb의 길이를 rp로 정의합니다.
r74
184{{{#!if this.rp=rb.length
185}}}
r92
186}}}
r101
187
r78
188rb가 음수이면 rb의 첫번째(0번 index)의 문자열에는 마이너스(-)가 들어갑니다. 이 때는 rp를 rb의 마이너스 문자열을 세지 않은 자릿수가 되도록 앞에서 정의했던 rb.length에서 1만큼 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 값이 고정되어 있으므로 rp처럼 줄일 필요가 없습니다.
r74
189{{{#!if rb[0]==45
r75
190{{{#!if rp=rp-1
r74
191}}}}}}
r62
192
r101
193ru값이 어떤지 보고 각 경우 rb값이 어떠한가에 따라 rb만 정리하거나 rb와 ru 모두 정리합니다.
r111
194중복 처리를 막기 위해 변수 하나를 정의합니다.
195{{{#!if this.ps=false
196}}}
r118
197
198소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다.
199{{{#!if i<ap
200{{{#!if tv=10*tv, i+=1
201}}}}}}
202{{{#!if i<ap
203{{{#!if tv=10*tv, i+=1
204}}}}}}
205{{{#!if i<ap
206{{{#!if tv=10*tv, i+=1
207}}}}}}
208{{{#!if i<ap
209{{{#!if tv=10*tv, i+=1
210}}}}}}
211{{{#!if i<ap
212{{{#!if tv=10*tv, i+=1
213}}}}}}
214
215{{{#!if i<ap
216{{{#!if tv=10*tv, i+=1
217}}}}}}
218{{{#!if i<ap
219{{{#!if tv=10*tv, i+=1
220}}}}}}
221{{{#!if i<ap
222{{{#!if tv=10*tv, i+=1
223}}}}}}
224{{{#!if i<ap
225{{{#!if tv=10*tv, i+=1
226}}}}}}
227{{{#!if i<ap
228{{{#!if tv=10*tv, i+=1
229}}}}}}
230
231{{{#!if i<ap
232{{{#!if tv=10*tv, i+=1
233}}}}}}
234{{{#!if i<ap
235{{{#!if tv=10*tv, i+=1
236}}}}}}
237{{{#!if i<ap
238{{{#!if tv=10*tv, i+=1
239}}}}}}
240{{{#!if i<ap
241{{{#!if tv=10*tv, i+=1
242}}}}}}
243{{{#!if i<ap
244{{{#!if tv=10*tv, i+=1
245}}}}}}
246
247{{{#!if i<ap
248{{{#!if tv=10*tv, i+=1
249}}}}}}
250{{{#!if i<ap
251{{{#!if tv=10*tv, i+=1
252}}}}}}
253{{{#!if i<ap
254{{{#!if tv=10*tv, i+=1
255}}}}}}
256
r80
257Case 1 : ru가 0보다 큰 경우
r76
258ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다.
r70
259{{{#!if ru>0
r80
260Case 1-1 : rb가 0 이상인 경우
r111
261{{{#!if (+rb>=0)&&(ps==false)
r78
262rb가 소수점 아래 자릿수를 초과하여 소수점 위의 수를 계산하게 생겼다면 ap=bp인 상황에서 rp>ap가 됩니다. rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
r76
263{{{#!if rp>ap
264{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r74
265}}}}}}
r78
266rb가 소수점 아래 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다.
r76
267{{{#!if rp<=ap
r77
268}}}
r111
269{{{#!if ps=true
r78
270}}}
r111
271}}}
r78
272
r101
273Case 1-2 : rb가 음수인 경우 ru에서 1을 빌려옵니다. 1보다 작은 양수값에서 1보다 작은 양수값을 빼면 -1보다 작을 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r111
274{{{#!if (+rb<0)&&(ps==false)
r78
275{{{#!if ru=ru-1
276}}}
r118
277소수점 아래 자릿수인 ap만큼 10을 제곱한 값(tv)을 rb에서 증가시켜 rb를 재정의합니다. 그러면 rb는 양수가 됩니다. 그리고 rb를 다시 문자열로 변환합니다.
278{{{#!if rb=tv+(+rb)
r78
279}}}{{{#!if rb=rb.toString()
280}}}
r111
281{{{#!if ps=true
282}}}}}}
r78
283정리과정을 끝냈으면 ru를 string으로 변환합니다.
284{{{#!if this.ru=ru.toString()
r76
285}}}}}}
286
r80
287Case 2 : ru가 0인 경우 ru가 0이 되면 rb의 값이 양수인지 음수인지에 따라 달라집니다.
r70
288{{{#!if ru==0
r80
289Case 2-1 : rb가 0 이상인 경우
r111
290{{{#!if (+rb>=0)&&(ps==false)
r78
291rb가 양수이면서 rb가 자릿수를 초과한 경우 rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
292{{{#!if rp>ap
293{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r111
294}}}}}}{{{#!if ps=true
295}}}}}}
r80
296Case 2-2 : rb가 음수인 경우
r111
297{{{#!if (+rb<0)&&(ps==false)
r80
298rb가 음수이면서 rb가 자릿수를 초과한 경우 값이 0인 ru에 1을 빼야 합니다. 그리고 rb가 "-"+숫자 꼴이므로 문자열의 1번 index에 해당하는 1을 지워야 합니다. 앞에서 rb가 음수인 경우 rp는 rb의 마이너스(-)가 차지하는 자릿수를 계산하지 않은 값 곧 숫자들이 차지하는 자릿수이므로, rb를 길이가 rp-1인 숫자들로 다시 정의합니다.
r78
299{{{#!if rp>ap
r80
300{{{#!if ru=ru-1, rb=rb.substr(2, rp-1)
301}}}}}}
302rb가 자릿수를 초과하지 않은 경우 rb에서 "-"를 뺀 문자열로 rb를 다시 정의합니다.
r108
303{{{#!if rp<=ap
r81
304{{{#!if rb=rb.substr(1, rp)
r111
305}}}}}}{{{#!if ps=true
306}}}}}}
r78
307정리과정을 끝냈으면 ru를 string으로 변환합니다.
308{{{#!if this.ru=ru.toString()
r70
309}}}
r80
310-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우 ru 문자열 앞에 "-"를 붙입니다.
311f가 "+"인지 "-"인지에 따라 처음 rb를 정의할 때 적었던 식을 다시 불러옵니다.
312{{{#!if ((f=="+")&&((+ab)+(+bb)<0))||((f=="-")&&((+ab)-(+bb)<0))
313{{{#!if ru="-"+ru
314}}}}}}
r78
315}}}
r79
316
r80
317Case 3 : ru가 0보다 작은 경우. 곧 -1 이하인 음수가 되는 경우.
r70
318{{{#!if ru<0
r81
319Case 3-1 : rb가 0 이하인 경우
r111
320{{{#!if (+rb<=0)&&(ps==false)
r81
321rb가 음수이면서 자릿수를 초과한 경우 ru에 -1을 빼고, rb의 음수기호(-)와 첫번째 숫자인 문자열 "1"을 뺀 문자열로 rb를 다시 정의합니다.
322{{{#!if rp>ap
r86
323{{{#!if rb=rb.substr(2, rp-1)
r70
324}}}
r86
325}}}
r114
326rb가 자릿수를 초과하지 않은 경우 rp는 음수기호를 제외한 숫자 자릿수이므로 rb를 음수기호만을 뺀 문자열로 다시 정의합니다. 단, rb가 0이 되면 rp==1이 되므로 rb==0인 경우는 제외합니다.
r108
327{{{#!if (rp<=ap)&&(+rb<0)
r113
328{{{#!if rb=rb.substr(1, rp)
r111
329}}}}}}{{{#!if ps=true
330}}}}}}
r88
331Case 3-2 : rb가 0보다 큰 경우. 소수점 아래 부분을 보면 -1보다 큰 음수값에서 -1보다 큰 음수값을 빼면 1보다 클 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r111
332{{{#!if (+rb>0)&&(ps==false)
r88
333ru<=-1이므로 ru+1를 해도 최대 0이 됩니다.
334{{{#!if ru=ru+1
r80
335}}}
r118
336rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값(tv)에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다.
337{{{#!if rb=tv-(+rb)
r88
338}}}{{{#!if rb=rb.toString()
r111
339}}}{{{#!if ps=true
340}}}}}}
r81
341정리과정을 끝냈으면 ru를 string으로 변환합니다.
342{{{#!if this.ru=ru.toString()
343}}}
344-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우가 된다면 ru 문자열 앞에 "-"를 붙입니다.
345{{{#!if +ru==0
346{{{#!if ru="-"+ru
347}}}}}}
348}}}
349여기까지가 소수점 아래 자릿수 숫자들의 계산과정입니다.
350}}}
r76
351
r101
352a와 b 모두 정수인 경우 ap, bp는 모두 0이 되므로 ru만을 그대로 문자열로 바꾸면 되며 소수점 아래(rb)는 표기해야 할 필요가 없으므로 rb="", (소수점 아래 자릿수)rp=0을 반환합니다.
353{{{#!if (ap==0)&&(bp==0)
354{{{#!if this.ru=ru.toString(), rb="", rp=0+0
355}}}}}}
356
r102
357rb==0인 경우 rb="", rp=0을 반환합니다.
358{{{#!if +rb==0
359{{{#!if rb="", rp=0+0
360}}}}}}
361
r106
362이제 rb=""이 아닌 경우 소수점 아래 숫자 정리를 합니다.
363rp를 rb의 문자열 길이로 다시 정의합니다.
r104
364{{{#!if rb!=""
365{{{#!if this.rp=rb.length
r110
366}}}
r104
367
r106
368+"000100"을 숫자로 바꾸면 100이 되는 문제가 있습니다. 이처럼 소수점 아래 자릿수를 연산한 결과를 문자열로 바꿨을 때 기존 소수점 아래 자릿수보다 작은 길이가 나오면 앞쪽에 0을 보충합니다.
369앞에서 ap,bp를 똑같이 맞췄으므로 ap를 가져옵니다. 자릿수가 모자랄 경우 0을 하나씩 보충합니다.
370{{{#!if rp<ap
r112
371{{{#!if rb="0"+rb, rp+=1
r106
372}}}}}}
373{{{#!if rp<ap
r112
374{{{#!if rb="0"+rb, rp+=1
r106
375}}}}}}
376{{{#!if rp<ap
r112
377{{{#!if rb="0"+rb, rp+=1
r106
378}}}}}}
379{{{#!if rp<ap
r112
380{{{#!if rb="0"+rb, rp+=1
r106
381}}}}}}
382{{{#!if rp<ap
r112
383{{{#!if rb="0"+rb, rp+=1
r106
384}}}}}}
385
386{{{#!if rp<ap
r112
387{{{#!if rb="0"+rb, rp+=1
r106
388}}}}}}
389{{{#!if rp<ap
r112
390{{{#!if rb="0"+rb, rp+=1
r106
391}}}}}}
392{{{#!if rp<ap
r112
393{{{#!if rb="0"+rb, rp+=1
r106
394}}}}}}
395{{{#!if rp<ap
r112
396{{{#!if rb="0"+rb, rp+=1
r106
397}}}}}}
398{{{#!if rp<ap
r112
399{{{#!if rb="0"+rb, rp+=1
r106
400}}}}}}
401
402{{{#!if rp<ap
r112
403{{{#!if rb="0"+rb, rp+=1
r106
404}}}}}}
405{{{#!if rp<ap
r112
406{{{#!if rb="0"+rb, rp+=1
r106
407}}}}}}
408{{{#!if rp<ap
r112
409{{{#!if rb="0"+rb, rp+=1
r106
410}}}}}}
411{{{#!if rp<ap
r112
412{{{#!if rb="0"+rb, rp+=1
r106
413}}}}}}
414{{{#!if rp<ap
r112
415{{{#!if rb="0"+rb, rp+=1
r106
416}}}}}}
417
418{{{#!if rp<ap
r112
419{{{#!if rb="0"+rb, rp+=1
r106
420}}}}}}
421{{{#!if rp<ap
r112
422{{{#!if rb="0"+rb, rp+=1
r106
423}}}}}}
424{{{#!if rp<ap
r112
425{{{#!if rb="0"+rb, rp+=1
r106
426}}}}}}
427
428앞에 0을 채웠다면 이제, 소수점 아래로 나오는 숫자를 보고 마지막에서부터 0이 나오면 한 자리씩 지우는 과정을 시작합니다.
429rp를 rb의 문자열 길이로 다시 정의합니다.
430{{{#!if this.rp=rb.length
r110
431}}}
r106
432
r105
433마지막 문자의 번호는 (문자열 길이 - 1)입니다. 극단적으로 .10000 00000 00000 000 이 나올 수 있겠지만 18회 조사합니다.
434substr(0,0)으로 하면 ""이 됩니다.
435{{{#!if rb[rp-1]==48
436{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
437}}}}}}
438{{{#!if rb[rp-1]==48
439{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
440}}}}}}
441{{{#!if rb[rp-1]==48
442{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
443}}}}}}
444{{{#!if rb[rp-1]==48
445{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
446}}}}}}
447{{{#!if rb[rp-1]==48
448{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
449}}}}}}
450
451{{{#!if rb[rp-1]==48
452{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
453}}}}}}
454{{{#!if rb[rp-1]==48
455{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
456}}}}}}
457{{{#!if rb[rp-1]==48
458{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
459}}}}}}
460{{{#!if rb[rp-1]==48
461{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
462}}}}}}
463{{{#!if rb[rp-1]==48
464{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
465}}}}}}
466
467{{{#!if rb[rp-1]==48
468{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
469}}}}}}
470{{{#!if rb[rp-1]==48
471{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
472}}}}}}
473{{{#!if rb[rp-1]==48
474{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
475}}}}}}
476{{{#!if rb[rp-1]==48
477{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
478}}}}}}
479{{{#!if rb[rp-1]==48
480{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
481}}}}}}
482
483{{{#!if rb[rp-1]==48
484{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
485}}}}}}
486{{{#!if rb[rp-1]==48
487{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
488}}}}}}
489{{{#!if rb[rp-1]==48
490{{{#!if this.rb=rb.substr(0,rb-1), rp=rp-1
r110
491}}}}}}}}}
r105
492rb 정리를 이것으로 종료합니다.
493
r81
494여기까지가 덧셈 또는 뺄셈연산의 계산과정입니다.
495}}}
496
r67
497{{{#!if f=="*"
r69
49818자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
499다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
r67
500}}}
501
r65
502error code 03 번 : 오버플로
503error code 04 번 : 언더플로
504error code 05 번 : 0으로 나눌 수 없습니다.
r64
505
r91
506아래 출력 변수 설명
r90
507'''sa''' : searching a; '''sb''' : searching b; '''sf''' : searching f;
r118
508'''rl''' : result string length to output; '''p''' : a point of string(s);
r91
509ru는 계산결과에서 소수점 위 자리이므로, dot(.)이 나오지 않습니다.
r67
510##여기까지 주석(주석 아님)
r102
511}}}}}}{{{#!wiki style="font-weight: 300; font-size: 20px;"
r89
512{{{#!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=='/')
513}}}{{{#!if !sa&&!sb&&!sf
r90
514변수를 입력하세요...
r102
515}}}{{{#!if !(sa&&sb&&sf)
516({{{#!if !sa
r89
517a{{{#!if !sb||!sf
518, }}}}}}{{{#!if !sb
519b{{{#!if !sf
520, }}}}}}{{{#!if !sf
r102
521f}}}를 입력하세요...)}}}{{{#!if sa&&sb&&sf
r119
522{{{#!if (ea==0)&&(eb==0)
r82
523{{{#!if as[0]!=45
r53
524@a@}}}{{{#!if as[0]==45
r117
525(@a@)}}} {{{#!if as.length>=20
r115
526[br]}}}{{{#!if f=='+'
r67
527+}}}{{{#!if f=="-"
528-}}}{{{#!if f=="*"
529*}}}{{{#!if f=="/"
r115
530/}}} {{{#!if bs[0]!=45
r53
531@b@}}}{{{#!if bs[0]==45
r117
532(@b@)}}} {{{#!if (bs.length>=20)||(as.length+bs.length>=30)
r116
533[br]}}}= {{{#!if (f=='+')||(f=='-')
r91
534{{{#!if this.i=0+0, this.rl=ru.length
535##ru string
536}}}{{{#!if +i<rl
537##ru[0]
r100
538{{{#!if p=ru[i]
r91
539}}}{{{#!if p==45
540-}}}{{{#!if p==48
5410}}}{{{#!if p==49
5421}}}{{{#!if p==50
5432}}}{{{#!if p==51
5443}}}{{{#!if p==52
5454}}}{{{#!if p==53
5465}}}{{{#!if p==54
5476}}}{{{#!if p==55
5487}}}{{{#!if p==56
5498}}}{{{#!if p==57
r100
5509}}}{{{#!if i+=1
r91
551}}}}}}{{{#!if +i<rl
552##ru[1]
r100
553{{{#!if p=ru[i]
r91
554}}}{{{#!if p==48
5550}}}{{{#!if p==49
5561}}}{{{#!if p==50
5572}}}{{{#!if p==51
5583}}}{{{#!if p==52
5594}}}{{{#!if p==53
5605}}}{{{#!if p==54
5616}}}{{{#!if p==55
5627}}}{{{#!if p==56
5638}}}{{{#!if p==57
r100
5649}}}{{{#!if i+=1
r91
565}}}}}}{{{#!if +i<rl
566##ru[2]
r100
567{{{#!if p=ru[i]
r91
568}}}{{{#!if p==48
5690}}}{{{#!if p==49
5701}}}{{{#!if p==50
5712}}}{{{#!if p==51
5723}}}{{{#!if p==52
5734}}}{{{#!if p==53
5745}}}{{{#!if p==54
5756}}}{{{#!if p==55
5767}}}{{{#!if p==56
5778}}}{{{#!if p==57
r100
5789}}}{{{#!if i+=1
r91
579}}}}}}{{{#!if +i<rl
580##ru[3]
r100
581{{{#!if p=ru[i]
r91
582}}}{{{#!if p==48
5830}}}{{{#!if p==49
5841}}}{{{#!if p==50
5852}}}{{{#!if p==51
5863}}}{{{#!if p==52
5874}}}{{{#!if p==53
5885}}}{{{#!if p==54
5896}}}{{{#!if p==55
5907}}}{{{#!if p==56
5918}}}{{{#!if p==57
r100
5929}}}{{{#!if i+=1
r91
593}}}}}}{{{#!if +i<rl
594##ru[4]
r100
595{{{#!if p=ru[i]
r91
596}}}{{{#!if p==48
5970}}}{{{#!if p==49
5981}}}{{{#!if p==50
5992}}}{{{#!if p==51
6003}}}{{{#!if p==52
6014}}}{{{#!if p==53
6025}}}{{{#!if p==54
6036}}}{{{#!if p==55
6047}}}{{{#!if p==56
6058}}}{{{#!if p==57
r100
6069}}}{{{#!if i+=1
r91
607}}}}}}{{{#!if +i<rl
608##ru[5]
r100
609{{{#!if p=ru[i]
r91
610}}}{{{#!if p==48
6110}}}{{{#!if p==49
6121}}}{{{#!if p==50
6132}}}{{{#!if p==51
6143}}}{{{#!if p==52
6154}}}{{{#!if p==53
6165}}}{{{#!if p==54
6176}}}{{{#!if p==55
6187}}}{{{#!if p==56
6198}}}{{{#!if p==57
r100
6209}}}{{{#!if i+=1
r91
621}}}}}}{{{#!if +i<rl
622##ru[6]
r100
623{{{#!if p=ru[i]
r91
624}}}{{{#!if p==48
6250}}}{{{#!if p==49
6261}}}{{{#!if p==50
6272}}}{{{#!if p==51
6283}}}{{{#!if p==52
6294}}}{{{#!if p==53
6305}}}{{{#!if p==54
6316}}}{{{#!if p==55
6327}}}{{{#!if p==56
6338}}}{{{#!if p==57
r100
6349}}}{{{#!if i+=1
r91
635}}}}}}{{{#!if +i<rl
636##ru[7]
r100
637{{{#!if p=ru[i]
r91
638}}}{{{#!if p==48
6390}}}{{{#!if p==49
6401}}}{{{#!if p==50
6412}}}{{{#!if p==51
6423}}}{{{#!if p==52
6434}}}{{{#!if p==53
6445}}}{{{#!if p==54
6456}}}{{{#!if p==55
6467}}}{{{#!if p==56
6478}}}{{{#!if p==57
r100
6489}}}{{{#!if i+=1
r91
649}}}}}}{{{#!if +i<rl
650##ru[8]
r100
651{{{#!if p=ru[i]
r91
652}}}{{{#!if p==48
6530}}}{{{#!if p==49
6541}}}{{{#!if p==50
6552}}}{{{#!if p==51
6563}}}{{{#!if p==52
6574}}}{{{#!if p==53
6585}}}{{{#!if p==54
6596}}}{{{#!if p==55
6607}}}{{{#!if p==56
6618}}}{{{#!if p==57
r100
6629}}}{{{#!if i+=1
r91
663}}}}}}{{{#!if +i<rl
664##ru[9]
r100
665{{{#!if p=ru[i]
r91
666}}}{{{#!if p==48
6670}}}{{{#!if p==49
6681}}}{{{#!if p==50
6692}}}{{{#!if p==51
6703}}}{{{#!if p==52
6714}}}{{{#!if p==53
6725}}}{{{#!if p==54
6736}}}{{{#!if p==55
6747}}}{{{#!if p==56
6758}}}{{{#!if p==57
r100
6769}}}{{{#!if i+=1
r91
677}}}}}}{{{#!if +i<rl
678##ru[10]
r100
679{{{#!if p=ru[i]
r91
680}}}{{{#!if p==48
6810}}}{{{#!if p==49
6821}}}{{{#!if p==50
6832}}}{{{#!if p==51
6843}}}{{{#!if p==52
6854}}}{{{#!if p==53
6865}}}{{{#!if p==54
6876}}}{{{#!if p==55
6887}}}{{{#!if p==56
6898}}}{{{#!if p==57
r100
6909}}}{{{#!if i+=1
r91
691}}}}}}{{{#!if +i<rl
692##ru[11]
r100
693{{{#!if p=ru[i]
r91
694}}}{{{#!if p==48
6950}}}{{{#!if p==49
6961}}}{{{#!if p==50
6972}}}{{{#!if p==51
6983}}}{{{#!if p==52
6994}}}{{{#!if p==53
7005}}}{{{#!if p==54
7016}}}{{{#!if p==55
7027}}}{{{#!if p==56
7038}}}{{{#!if p==57
r100
7049}}}{{{#!if i+=1
r91
705}}}}}}{{{#!if +i<rl
706##ru[12]
r100
707{{{#!if p=ru[i]
r91
708}}}{{{#!if p==48
7090}}}{{{#!if p==49
7101}}}{{{#!if p==50
7112}}}{{{#!if p==51
7123}}}{{{#!if p==52
7134}}}{{{#!if p==53
7145}}}{{{#!if p==54
7156}}}{{{#!if p==55
7167}}}{{{#!if p==56
7178}}}{{{#!if p==57
r100
7189}}}{{{#!if i+=1
r91
719}}}}}}{{{#!if +i<rl
720##ru[13]
r100
721{{{#!if p=ru[i]
r91
722}}}{{{#!if p==48
7230}}}{{{#!if p==49
7241}}}{{{#!if p==50
7252}}}{{{#!if p==51
7263}}}{{{#!if p==52
7274}}}{{{#!if p==53
7285}}}{{{#!if p==54
7296}}}{{{#!if p==55
7307}}}{{{#!if p==56
7318}}}{{{#!if p==57
r100
7329}}}{{{#!if i+=1
r91
733}}}}}}{{{#!if +i<rl
734##ru[14]
r100
735{{{#!if p=ru[i]
r91
736}}}{{{#!if p==48
7370}}}{{{#!if p==49
7381}}}{{{#!if p==50
7392}}}{{{#!if p==51
7403}}}{{{#!if p==52
7414}}}{{{#!if p==53
7425}}}{{{#!if p==54
7436}}}{{{#!if p==55
7447}}}{{{#!if p==56
7458}}}{{{#!if p==57
r100
7469}}}{{{#!if i+=1
r91
747}}}}}}{{{#!if +i<rl
748##ru[15]
r100
749{{{#!if p=ru[i]
r91
750}}}{{{#!if p==48
7510}}}{{{#!if p==49
7521}}}{{{#!if p==50
7532}}}{{{#!if p==51
7543}}}{{{#!if p==52
7554}}}{{{#!if p==53
7565}}}{{{#!if p==54
7576}}}{{{#!if p==55
7587}}}{{{#!if p==56
7598}}}{{{#!if p==57
r100
7609}}}{{{#!if i+=1
r91
761}}}}}}{{{#!if +i<rl
762##ru[16]
r100
763{{{#!if p=ru[i]
r91
764}}}{{{#!if p==48
7650}}}{{{#!if p==49
7661}}}{{{#!if p==50
7672}}}{{{#!if p==51
7683}}}{{{#!if p==52
7694}}}{{{#!if p==53
7705}}}{{{#!if p==54
7716}}}{{{#!if p==55
7727}}}{{{#!if p==56
7738}}}{{{#!if p==57
r100
7749}}}{{{#!if i+=1
r91
775}}}}}}{{{#!if +i<rl
776##ru[17]
r100
777{{{#!if p=ru[i]
r91
778}}}{{{#!if p==48
7790}}}{{{#!if p==49
7801}}}{{{#!if p==50
7812}}}{{{#!if p==51
7823}}}{{{#!if p==52
7834}}}{{{#!if p==53
7845}}}{{{#!if p==54
7856}}}{{{#!if p==55
7867}}}{{{#!if p==56
7878}}}{{{#!if p==57
r100
7889}}}{{{#!if i+=1
r91
789}}}}}}{{{#!if +i<rl
790##ru[18]
r100
791{{{#!if p=ru[i]
r91
792}}}{{{#!if p==48
7930}}}{{{#!if p==49
7941}}}{{{#!if p==50
7952}}}{{{#!if p==51
7963}}}{{{#!if p==52
7974}}}{{{#!if p==53
7985}}}{{{#!if p==54
7996}}}{{{#!if p==55
8007}}}{{{#!if p==56
8018}}}{{{#!if p==57
r100
8029}}}{{{#!if i+=1
r91
803}}}}}}{{{#!if +i<rl
804##ru[19]
r100
805{{{#!if p=ru[i]
r91
806}}}{{{#!if p==48
8070}}}{{{#!if p==49
8081}}}{{{#!if p==50
8092}}}{{{#!if p==51
8103}}}{{{#!if p==52
8114}}}{{{#!if p==53
8125}}}{{{#!if p==54
8136}}}{{{#!if p==55
8147}}}{{{#!if p==56
8158}}}{{{#!if p==57
r100
8169}}}{{{#!if i+=1
r91
817}}}}}}{{{#!if +i<rl
818##ru[20] -1,000,000,000,000,000,000 같은 결과가 나올 경우.
r100
819{{{#!if p=ru[i]
r91
820}}}{{{#!if p==48
8210}}}{{{#!if p==49
8221}}}{{{#!if p==50
8232}}}{{{#!if p==51
8243}}}{{{#!if p==52
8254}}}{{{#!if p==53
8265}}}{{{#!if p==54
8276}}}{{{#!if p==55
8287}}}{{{#!if p==56
8298}}}{{{#!if p==57
r100
8309}}}{{{#!if i+=1
r103
831}}}}}}{{{#!if +rp!=0
r105
832##rb string, decimal point marking
833{{{#!if i=0+0
834}}}.{{{#!if +i<rp
835##rb[0]
836{{{#!if p=rb[i]
837}}}{{{#!if p==48
8380}}}{{{#!if p==49
8391}}}{{{#!if p==50
8402}}}{{{#!if p==51
8413}}}{{{#!if p==52
8424}}}{{{#!if p==53
8435}}}{{{#!if p==54
8446}}}{{{#!if p==55
8457}}}{{{#!if p==56
8468}}}{{{#!if p==57
8479}}}{{{#!if i+=1
848}}}}}}{{{#!if +i<rp
849##rb[1]
850{{{#!if p=rb[i]
851}}}{{{#!if p==48
8520}}}{{{#!if p==49
8531}}}{{{#!if p==50
8542}}}{{{#!if p==51
8553}}}{{{#!if p==52
8564}}}{{{#!if p==53
8575}}}{{{#!if p==54
8586}}}{{{#!if p==55
8597}}}{{{#!if p==56
8608}}}{{{#!if p==57
8619}}}{{{#!if i+=1
862}}}}}}{{{#!if +i<rp
863##rb[2]
864{{{#!if p=rb[i]
865}}}{{{#!if p==48
8660}}}{{{#!if p==49
8671}}}{{{#!if p==50
8682}}}{{{#!if p==51
8693}}}{{{#!if p==52
8704}}}{{{#!if p==53
8715}}}{{{#!if p==54
8726}}}{{{#!if p==55
8737}}}{{{#!if p==56
8748}}}{{{#!if p==57
8759}}}{{{#!if i+=1
876}}}}}}{{{#!if +i<rp
877##rb[3]
878{{{#!if p=rb[i]
879}}}{{{#!if p==48
8800}}}{{{#!if p==49
8811}}}{{{#!if p==50
8822}}}{{{#!if p==51
8833}}}{{{#!if p==52
8844}}}{{{#!if p==53
8855}}}{{{#!if p==54
8866}}}{{{#!if p==55
8877}}}{{{#!if p==56
8888}}}{{{#!if p==57
8899}}}{{{#!if i+=1
890}}}}}}{{{#!if +i<rp
891##rb[4]
892{{{#!if p=rb[i]
893}}}{{{#!if p==48
8940}}}{{{#!if p==49
8951}}}{{{#!if p==50
8962}}}{{{#!if p==51
8973}}}{{{#!if p==52
8984}}}{{{#!if p==53
8995}}}{{{#!if p==54
9006}}}{{{#!if p==55
9017}}}{{{#!if p==56
9028}}}{{{#!if p==57
9039}}}{{{#!if i+=1
904}}}}}}{{{#!if +i<rp
905##rb[5]
906{{{#!if p=rb[i]
907}}}{{{#!if p==48
9080}}}{{{#!if p==49
9091}}}{{{#!if p==50
9102}}}{{{#!if p==51
9113}}}{{{#!if p==52
9124}}}{{{#!if p==53
9135}}}{{{#!if p==54
9146}}}{{{#!if p==55
9157}}}{{{#!if p==56
9168}}}{{{#!if p==57
9179}}}{{{#!if i+=1
918}}}}}}{{{#!if +i<rp
919##rb[6]
920{{{#!if p=rb[i]
921}}}{{{#!if p==48
9220}}}{{{#!if p==49
9231}}}{{{#!if p==50
9242}}}{{{#!if p==51
9253}}}{{{#!if p==52
9264}}}{{{#!if p==53
9275}}}{{{#!if p==54
9286}}}{{{#!if p==55
9297}}}{{{#!if p==56
9308}}}{{{#!if p==57
9319}}}{{{#!if i+=1
932}}}}}}{{{#!if +i<rp
933##rb[7]
934{{{#!if p=rb[i]
935}}}{{{#!if p==48
9360}}}{{{#!if p==49
9371}}}{{{#!if p==50
9382}}}{{{#!if p==51
9393}}}{{{#!if p==52
9404}}}{{{#!if p==53
9415}}}{{{#!if p==54
9426}}}{{{#!if p==55
9437}}}{{{#!if p==56
9448}}}{{{#!if p==57
9459}}}{{{#!if i+=1
946}}}}}}{{{#!if +i<rp
947##rb[8]
948{{{#!if p=rb[i]
949}}}{{{#!if p==48
9500}}}{{{#!if p==49
9511}}}{{{#!if p==50
9522}}}{{{#!if p==51
9533}}}{{{#!if p==52
9544}}}{{{#!if p==53
9555}}}{{{#!if p==54
9566}}}{{{#!if p==55
9577}}}{{{#!if p==56
9588}}}{{{#!if p==57
9599}}}{{{#!if i+=1
960}}}}}}{{{#!if +i<rp
961##rb[9]
962{{{#!if p=rb[i]
963}}}{{{#!if p==48
9640}}}{{{#!if p==49
9651}}}{{{#!if p==50
9662}}}{{{#!if p==51
9673}}}{{{#!if p==52
9684}}}{{{#!if p==53
9695}}}{{{#!if p==54
9706}}}{{{#!if p==55
9717}}}{{{#!if p==56
9728}}}{{{#!if p==57
9739}}}{{{#!if i+=1
974}}}}}}{{{#!if +i<rp
975##rb[10]
976{{{#!if p=rb[i]
977}}}{{{#!if p==48
9780}}}{{{#!if p==49
9791}}}{{{#!if p==50
9802}}}{{{#!if p==51
9813}}}{{{#!if p==52
9824}}}{{{#!if p==53
9835}}}{{{#!if p==54
9846}}}{{{#!if p==55
9857}}}{{{#!if p==56
9868}}}{{{#!if p==57
9879}}}{{{#!if i+=1
988}}}}}}{{{#!if +i<rp
989##rb[11]
990{{{#!if p=rb[i]
991}}}{{{#!if p==48
9920}}}{{{#!if p==49
9931}}}{{{#!if p==50
9942}}}{{{#!if p==51
9953}}}{{{#!if p==52
9964}}}{{{#!if p==53
9975}}}{{{#!if p==54
9986}}}{{{#!if p==55
9997}}}{{{#!if p==56
10008}}}{{{#!if p==57
10019}}}{{{#!if i+=1
1002}}}}}}{{{#!if +i<rp
1003##rb[12]
1004{{{#!if p=rb[i]
1005}}}{{{#!if p==48
10060}}}{{{#!if p==49
10071}}}{{{#!if p==50
10082}}}{{{#!if p==51
10093}}}{{{#!if p==52
10104}}}{{{#!if p==53
10115}}}{{{#!if p==54
10126}}}{{{#!if p==55
10137}}}{{{#!if p==56
10148}}}{{{#!if p==57
10159}}}{{{#!if i+=1
1016}}}}}}{{{#!if +i<rp
1017##rb[13]
1018{{{#!if p=rb[i]
1019}}}{{{#!if p==48
10200}}}{{{#!if p==49
10211}}}{{{#!if p==50
10222}}}{{{#!if p==51
10233}}}{{{#!if p==52
10244}}}{{{#!if p==53
10255}}}{{{#!if p==54
10266}}}{{{#!if p==55
10277}}}{{{#!if p==56
10288}}}{{{#!if p==57
10299}}}{{{#!if i+=1
1030}}}}}}{{{#!if +i<rp
1031##rb[14]
1032{{{#!if p=rb[i]
1033}}}{{{#!if p==48
10340}}}{{{#!if p==49
10351}}}{{{#!if p==50
10362}}}{{{#!if p==51
10373}}}{{{#!if p==52
10384}}}{{{#!if p==53
10395}}}{{{#!if p==54
10406}}}{{{#!if p==55
10417}}}{{{#!if p==56
10428}}}{{{#!if p==57
10439}}}{{{#!if i+=1
1044}}}}}}{{{#!if +i<rp
1045##rb[15]
1046{{{#!if p=rb[i]
1047}}}{{{#!if p==48
10480}}}{{{#!if p==49
10491}}}{{{#!if p==50
10502}}}{{{#!if p==51
10513}}}{{{#!if p==52
10524}}}{{{#!if p==53
10535}}}{{{#!if p==54
10546}}}{{{#!if p==55
10557}}}{{{#!if p==56
10568}}}{{{#!if p==57
10579}}}{{{#!if i+=1
1058}}}}}}{{{#!if +i<rp
1059##rb[16]
1060{{{#!if p=rb[i]
1061}}}{{{#!if p==48
10620}}}{{{#!if p==49
10631}}}{{{#!if p==50
10642}}}{{{#!if p==51
10653}}}{{{#!if p==52
10664}}}{{{#!if p==53
10675}}}{{{#!if p==54
10686}}}{{{#!if p==55
10697}}}{{{#!if p==56
10708}}}{{{#!if p==57
10719}}}{{{#!if i+=1
1072}}}}}}{{{#!if +i<rp
1073##rb[17]
1074{{{#!if p=rb[i]
1075}}}{{{#!if p==48
10760}}}{{{#!if p==49
10771}}}{{{#!if p==50
10782}}}{{{#!if p==51
10793}}}{{{#!if p==52
10804}}}{{{#!if p==53
10815}}}{{{#!if p==54
10826}}}{{{#!if p==55
10837}}}{{{#!if p==56
10848}}}{{{#!if p==57
10859}}}{{{#!if i+=1
r122
1086}}}}}}}}}}}}}}}{{{#!if (wa>0)||(wb>0)
1087[br]{{{#!wiki style="display: inline; text-shadow: 1px 1px 2px gray; "
1088{{{#yellow 경고 : }}}}}}변수 {{{#!if wa==1
1089a{{{#!if wb==1
1090와 }}}}}}{{{#!if wb==1
1091b}}}의 소수점 아래 값이 너무 많습니다. 소수점 아래 19번째 자리부터는 계산하지 않습니다.
1092}}}}}}{{{#!if (ea>0)||(eb>0)
r119
1093{{{#!if (ea==1)||(eb==1)
r122
1094{{{#orangered 오류 : }}}변수 {{{#!if ea==1
r119
1095a{{{#!if eb==1
1096와 }}}}}}{{{#!if eb==1
r121
1097b}}}에 너무 많은 값을 입력했습니다. {{{#gray (오버플로)}}}}}}
r105
1098}}}}}}
r44
1099==# 2-1 #==
1100{{{#!wiki style="font-weight: 300; font-size: 20px"
r37
1101{{{#!if +a>=0
1102@a@}}}{{{#!if +a<0
r36
1103(@a@)}}} {{{#!if f == '+'
r40

(r37으로 되돌림)
1104{{{#!if r =(+a)+(+b)+0.0, u=(+a)+(+b)
r7

(r5으로 되돌림)
1105}}}+}}}{{{#!if f == '-'
r40

(r37으로 되돌림)
1106{{{#!if r =(+a)-(+b)+0.0, u=(+a)-(+b)
r7

(r5으로 되돌림)
1107}}}-}}}{{{#!if f == '*'
r40

(r37으로 되돌림)
1108{{{#!if r =((+a)+0.0)*((+b)+0.0), u=(+a)*(+b)
r7

(r5으로 되돌림)
1109}}}×}}}{{{#!if f == '/'
r40

(r37으로 되돌림)
1110{{{#!if r =((+a)+0.0)/((+b)+0.0), u=(+a)/(+b)
r37
1111}}}÷}}} {{{#!if +b>=0
1112@b@}}}{{{#!if +b<0
r36
1113(@b@)}}} = {{{#!if u=r-u, d=false
r18

(r16으로 되돌림)
1114##u : 나누어떨어지는 부분 절삭하기. d : dot 매김 여부
r20
1115}}}{{{#!if r=r.toString(), u=u.toString()
r10
1116}}}{{{#!if o=0, l=r.length
r11
1117}}}{{{#!if (r!=null)&&(r!="")
1118{{{#!if +o<l
r18

(r16으로 되돌림)
1119##1
r11
1120{{{#!if p=r[o]
r9
1121}}}{{{#!if p==45
1122-}}}{{{#!if p==46
r14
1123{{{#!if d=true
r20
1124}}}}}}{{{#!if p==48
r9
11250}}}{{{#!if p==49
11261}}}{{{#!if p==50
11272}}}{{{#!if p==51
11283}}}{{{#!if p==52
11294}}}{{{#!if p==53
11305}}}{{{#!if p==54
11316}}}{{{#!if p==55
11327}}}{{{#!if p==56
11338}}}{{{#!if p==57
r41
11349}}}{{{#!if o+=1
r19
1135}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1136##2
r11
1137{{{#!if p=r[o]
r35
1138}}}{{{#!if p==46
r14
1139{{{#!if d=true
r20
1140}}}}}}{{{#!if p==48
r9
11410}}}{{{#!if p==49
11421}}}{{{#!if p==50
11432}}}{{{#!if p==51
11443}}}{{{#!if p==52
11454}}}{{{#!if p==53
11465}}}{{{#!if p==54
11476}}}{{{#!if p==55
11487}}}{{{#!if p==56
11498}}}{{{#!if p==57
r41
11509}}}{{{#!if o+=1
r23
1151}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1152##3
r11
1153{{{#!if p=r[o]
r35
1154}}}{{{#!if p==46
r14
1155{{{#!if d=true
r20
1156}}}}}}{{{#!if p==48
r9
11570}}}{{{#!if p==49
11581}}}{{{#!if p==50
11592}}}{{{#!if p==51
11603}}}{{{#!if p==52
11614}}}{{{#!if p==53
11625}}}{{{#!if p==54
11636}}}{{{#!if p==55
11647}}}{{{#!if p==56
11658}}}{{{#!if p==57
r41
11669}}}{{{#!if o+=1
r23
1167}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1168##4
r11
1169{{{#!if p=r[o]
r35
1170}}}{{{#!if p==46
r14
1171{{{#!if d=true
r20
1172}}}}}}{{{#!if p==48
r9
11730}}}{{{#!if p==49
11741}}}{{{#!if p==50
11752}}}{{{#!if p==51
11763}}}{{{#!if p==52
11774}}}{{{#!if p==53
11785}}}{{{#!if p==54
11796}}}{{{#!if p==55
11807}}}{{{#!if p==56
11818}}}{{{#!if p==57
r41
11829}}}{{{#!if o+=1
r23
1183}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1184##5
r11
1185{{{#!if p=r[o]
r35
1186}}}{{{#!if p==46
r14
1187{{{#!if d=true
r20
1188}}}}}}{{{#!if p==48
r9
11890}}}{{{#!if p==49
11901}}}{{{#!if p==50
11912}}}{{{#!if p==51
11923}}}{{{#!if p==52
11934}}}{{{#!if p==53
11945}}}{{{#!if p==54
11956}}}{{{#!if p==55
11967}}}{{{#!if p==56
11978}}}{{{#!if p==57
r41
11989}}}{{{#!if o+=1
r23
1199}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1200##6
r11
1201{{{#!if p=r[o]
r35
1202}}}{{{#!if p==46
r14
1203{{{#!if d=true
r20
1204}}}}}}{{{#!if p==48
r9
12050}}}{{{#!if p==49
12061}}}{{{#!if p==50
12072}}}{{{#!if p==51
12083}}}{{{#!if p==52
12094}}}{{{#!if p==53
12105}}}{{{#!if p==54
12116}}}{{{#!if p==55
12127}}}{{{#!if p==56
12138}}}{{{#!if p==57
r41
12149}}}{{{#!if o+=1
r23
1215}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1216##7
r11
1217{{{#!if p=r[o]
r35
1218}}}{{{#!if p==46
r14
1219{{{#!if d=true
r20
1220}}}}}}{{{#!if p==48
r9
12210}}}{{{#!if p==49
12221}}}{{{#!if p==50
12232}}}{{{#!if p==51
12243}}}{{{#!if p==52
12254}}}{{{#!if p==53
12265}}}{{{#!if p==54
12276}}}{{{#!if p==55
12287}}}{{{#!if p==56
12298}}}{{{#!if p==57
r41
12309}}}{{{#!if o+=1
r23
1231}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1232##8
r11
1233{{{#!if p=r[o]
r35
1234}}}{{{#!if p==46
r14
1235{{{#!if d=true
r20
1236}}}}}}{{{#!if p==48
r9
12370}}}{{{#!if p==49
12381}}}{{{#!if p==50
12392}}}{{{#!if p==51
12403}}}{{{#!if p==52
12414}}}{{{#!if p==53
12425}}}{{{#!if p==54
12436}}}{{{#!if p==55
12447}}}{{{#!if p==56
12458}}}{{{#!if p==57
r41
12469}}}{{{#!if o+=1
r23
1247}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1248##9
r11
1249{{{#!if p=r[o]
r35
1250}}}{{{#!if p==46
r14
1251{{{#!if d=true
r20
1252}}}}}}{{{#!if p==48
r9
12530}}}{{{#!if p==49
12541}}}{{{#!if p==50
12552}}}{{{#!if p==51
12563}}}{{{#!if p==52
12574}}}{{{#!if p==53
12585}}}{{{#!if p==54
12596}}}{{{#!if p==55
12607}}}{{{#!if p==56
12618}}}{{{#!if p==57
r41
12629}}}{{{#!if o+=1
r23
1263}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1264##10
r11
1265{{{#!if p=r[o]
r35
1266}}}{{{#!if p==46
r14
1267{{{#!if d=true
r20
1268}}}}}}{{{#!if p==48
r9
12690}}}{{{#!if p==49
12701}}}{{{#!if p==50
12712}}}{{{#!if p==51
12723}}}{{{#!if p==52
12734}}}{{{#!if p==53
12745}}}{{{#!if p==54
12756}}}{{{#!if p==55
12767}}}{{{#!if p==56
12778}}}{{{#!if p==57
r41
12789}}}{{{#!if o+=1
r23
1279}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1280##11
r11
1281{{{#!if p=r[o]
r35
1282}}}{{{#!if p==46
r14
1283{{{#!if d=true
r20
1284}}}}}}{{{#!if p==48
r9
12850}}}{{{#!if p==49
12861}}}{{{#!if p==50
12872}}}{{{#!if p==51
12883}}}{{{#!if p==52
12894}}}{{{#!if p==53
12905}}}{{{#!if p==54
12916}}}{{{#!if p==55
12927}}}{{{#!if p==56
12938}}}{{{#!if p==57
r41
12949}}}{{{#!if o+=1
r23
1295}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1296##12
r11
1297{{{#!if p=r[o]
r35
1298}}}{{{#!if p==46
r14
1299{{{#!if d=true
r20
1300}}}}}}{{{#!if p==48
r9
13010}}}{{{#!if p==49
13021}}}{{{#!if p==50
13032}}}{{{#!if p==51
13043}}}{{{#!if p==52
13054}}}{{{#!if p==53
13065}}}{{{#!if p==54
13076}}}{{{#!if p==55
13087}}}{{{#!if p==56
13098}}}{{{#!if p==57
r41
13109}}}{{{#!if o+=1
r23
1311}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1312##13
r11
1313{{{#!if p=r[o]
r35
1314}}}{{{#!if p==46
r14
1315{{{#!if d=true
r20
1316}}}}}}{{{#!if p==48
r9
13170}}}{{{#!if p==49
13181}}}{{{#!if p==50
13192}}}{{{#!if p==51
13203}}}{{{#!if p==52
13214}}}{{{#!if p==53
13225}}}{{{#!if p==54
13236}}}{{{#!if p==55
13247}}}{{{#!if p==56
13258}}}{{{#!if p==57
r41
13269}}}{{{#!if o+=1
r23
1327}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1328##14
r11
1329{{{#!if p=r[o]
r35
1330}}}{{{#!if p==46
r14
1331{{{#!if d=true
r20
1332}}}}}}{{{#!if p==48
r9
13330}}}{{{#!if p==49
13341}}}{{{#!if p==50
13352}}}{{{#!if p==51
13363}}}{{{#!if p==52
13374}}}{{{#!if p==53
13385}}}{{{#!if p==54
13396}}}{{{#!if p==55
13407}}}{{{#!if p==56
13418}}}{{{#!if p==57
r41
13429}}}{{{#!if o+=1
r23
1343}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1344##15
r11
1345{{{#!if p=r[o]
r35
1346}}}{{{#!if p==46
r14
1347{{{#!if d=true
r20
1348}}}}}}{{{#!if p==48
r9
13490}}}{{{#!if p==49
13501}}}{{{#!if p==50
13512}}}{{{#!if p==51
13523}}}{{{#!if p==52
13534}}}{{{#!if p==53
13545}}}{{{#!if p==54
13556}}}{{{#!if p==55
13567}}}{{{#!if p==56
13578}}}{{{#!if p==57
r41
13589}}}{{{#!if o+=1
r23
1359}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1360##16
r11
1361{{{#!if p=r[o]
r35
1362}}}{{{#!if p==46
r14
1363{{{#!if d=true
r20
1364}}}}}}{{{#!if p==48
r9
13650}}}{{{#!if p==49
13661}}}{{{#!if p==50
13672}}}{{{#!if p==51
13683}}}{{{#!if p==52
13694}}}{{{#!if p==53
13705}}}{{{#!if p==54
13716}}}{{{#!if p==55
13727}}}{{{#!if p==56
13738}}}{{{#!if p==57
r41
13749}}}{{{#!if o+=1
r23
1375}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1376##17
r11
1377{{{#!if p=r[o]
r35
1378}}}{{{#!if p==46
r14
1379{{{#!if d=true
r20
1380}}}}}}{{{#!if p==48
r9
13810}}}{{{#!if p==49
13821}}}{{{#!if p==50
13832}}}{{{#!if p==51
13843}}}{{{#!if p==52
13854}}}{{{#!if p==53
13865}}}{{{#!if p==54
13876}}}{{{#!if p==55
13887}}}{{{#!if p==56
13898}}}{{{#!if p==57
r41
13909}}}{{{#!if o+=1
r23
1391}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1392##18
r11
1393{{{#!if p=r[o]
r35
1394}}}{{{#!if p==46
r14
1395{{{#!if d=true
r20
1396}}}}}}{{{#!if p==48
r9
13970}}}{{{#!if p==49
13981}}}{{{#!if p==50
13992}}}{{{#!if p==51
14003}}}{{{#!if p==52
14014}}}{{{#!if p==53
14025}}}{{{#!if p==54
14036}}}{{{#!if p==55
14047}}}{{{#!if p==56
14058}}}{{{#!if p==57
r41
14069}}}{{{#!if o+=1
r23
1407}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1408##19
r11
1409{{{#!if p=r[o]
r35
1410}}}{{{#!if p==46
r14
1411{{{#!if d=true
r20
1412}}}}}}{{{#!if p==48
r9
14130}}}{{{#!if p==49
14141}}}{{{#!if p==50
14152}}}{{{#!if p==51
14163}}}{{{#!if p==52
14174}}}{{{#!if p==53
14185}}}{{{#!if p==54
14196}}}{{{#!if p==55
14207}}}{{{#!if p==56
14218}}}{{{#!if p==57
r41
14229}}}{{{#!if o+=1
r23
1423}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
1424##20
r11
1425{{{#!if p=r[o]
r35
1426}}}{{{#!if p==46
r14
1427{{{#!if d=true
r20
1428}}}}}}{{{#!if p==48
r9
14290}}}{{{#!if p==49
14301}}}{{{#!if p==50
14312}}}{{{#!if p==51
14323}}}{{{#!if p==52
14334}}}{{{#!if p==53
14345}}}{{{#!if p==54
14356}}}{{{#!if p==55
14367}}}{{{#!if p==56
14378}}}{{{#!if p==57
r41
14389}}}{{{#!if o+=1
r20
1439}}}}}}{{{#!if o=0, l=u.length
1440}}}{{{#!if u[0]==45
1441##음수로 마이너스가 표시되면 넘기기
r41
1442{{{#!if o+=1
r20
1443}}}}}}{{{#!if l-o>2
1444##소수점이 나오면 "0."으로 2자리 차지하므로 소수점 표기.
r41
1445{{{#!if o+=1
r42
1446##일의 자리 넘기기
r32
1447}}}{{{#!if (u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48)||(u[o+5]!=48)||(u[o+6]!=48)
r42
1448##".000000"은 표기하지 않음. 소수점 표기
1449.{{{#!if o+=1
1450}}}}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48)||(u[o+5]!=48))
r21
1451##1
r22
1452{{{#!if p=u[o]
r21
1453}}}{{{#!if p==48
r25
14540}}}{{{#!if p==49
r21
14551}}}{{{#!if p==50
14562}}}{{{#!if p==51
14573}}}{{{#!if p==52
14584}}}{{{#!if p==53
14595}}}{{{#!if p==54
14606}}}{{{#!if p==55
14617}}}{{{#!if p==56
14628}}}{{{#!if p==57
r41
14639}}}{{{#!if o+=1
r23
1464}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48))
r21
1465##2
r22
1466{{{#!if p=u[o]
r21
1467}}}{{{#!if p==48
14680}}}{{{#!if p==49
14691}}}{{{#!if p==50
14702}}}{{{#!if p==51
14713}}}{{{#!if p==52
14724}}}{{{#!if p==53
14735}}}{{{#!if p==54
14746}}}{{{#!if p==55
14757}}}{{{#!if p==56
14768}}}{{{#!if p==57
r41
14779}}}{{{#!if o+=1
r23
1478}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48))
r21
1479##3
r22
1480{{{#!if p=u[o]
r21
1481}}}{{{#!if p==48
14820}}}{{{#!if p==49
14831}}}{{{#!if p==50
14842}}}{{{#!if p==51
14853}}}{{{#!if p==52
14864}}}{{{#!if p==53
14875}}}{{{#!if p==54
14886}}}{{{#!if p==55
14897}}}{{{#!if p==56
14908}}}{{{#!if p==57
r41
14919}}}{{{#!if o+=1
r23
1492}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48))
r21
1493##4
r22
1494{{{#!if p=u[o]
r21
1495}}}{{{#!if p==48
14960}}}{{{#!if p==49
14971}}}{{{#!if p==50
14982}}}{{{#!if p==51
14993}}}{{{#!if p==52
15004}}}{{{#!if p==53
15015}}}{{{#!if p==54
15026}}}{{{#!if p==55
15037}}}{{{#!if p==56
15048}}}{{{#!if p==57
r41
15059}}}{{{#!if o+=1
r23
1506}}}}}}{{{#!if (o<l)&&(d==true)&&(u[o+1]!=48)
r21
1507##5
r22
1508{{{#!if p=u[o]
r21
1509}}}{{{#!if p==48
15100}}}{{{#!if p==49
15111}}}{{{#!if p==50
15122}}}{{{#!if p==51
15133}}}{{{#!if p==52
15144}}}{{{#!if p==53
15155}}}{{{#!if p==54
15166}}}{{{#!if p==55
15177}}}{{{#!if p==56
15188}}}{{{#!if p==57
r41
15199}}}{{{#!if o+=1
r23
1520}}}}}}{{{#!if (o<l)&&(d==true)
r21
1521##6
r22
1522{{{#!if p=u[o]
r21
1523}}}{{{#!if p==48
r26
1524##"0" 미표기
1525}}}{{{#!if p==49
r21
15261}}}{{{#!if p==50
15272}}}{{{#!if p==51
15283}}}{{{#!if p==52
15294}}}{{{#!if p==53
15305}}}{{{#!if p==54
15316}}}{{{#!if p==55
15327}}}{{{#!if p==56
15338}}}{{{#!if p==57
r41
15349}}}{{{#!if o+=1
r34
1535}}}}}}}}}}}}