r85
r43
1[[분류:냥]][Include(틀:상세 내용, 설명대상=원본, 문서명=틀\:계산기)]
r44
2== 2-2 ==
r83
3{{{#!wiki style="display: none;"
r59
4##초기화
r55
5'''as''' : "a" value to string; '''bs''' : "b" value to string;
r56
6'''al''' : "a" string length (integer); '''bl''' : "b" string length (integer)
7'''ad''' : "a" decimal point (integer); '''bd''' : "b" decimal point (integer);
8'''au''' : --gold-- "a" upper value (string→integer); '''bu''' : "b" upper value (string→integer);
9'''ab''' : "a" below value (string→integer); '''bb''' : "b" below value (string→integer);
r55
10'''ap''' : "a" # of places of decimal (integer); '''bp''' : "b" # of places of decimal (integer);
110.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
r78
12'''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string);
13'''rp''' : "result" # of places of decimal (integer);
r66
14{{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0
r53
15}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
16}}}{{{#!if ad!=-1
r56
17소수점이 발견되는 자리 번호가 ad이므로 ad+1번에 해당되는 자리부터 끝까지 표기.
18{{{#!if this.au=as.substr(0,ad), this.ab=as.substr(ad+1, al-ad-1), this.ap=ab.length
r64
19}}}{{{#!if (au=="")||(au=="-")||(au=="+")
r58
20.12345 식으로 또는 -.12345 식으로 기입할 경우 upper 값을 0으로 부여함.
r62
21{{{#!if au="0"
r56
22}}}}}}}}}{{{#!if ad==-1
r53
23{{{#!if this.au=as, ab="", ap=0+0
24}}}}}}{{{#!if bd!=-1
r56
25{{{#!if this.bu=bs.substr.(0,bd), this.bb=bs.substr(bd+1, bl-bd-1), this.bp=bb.length
r64
26}}}{{{#!if (bu=="")||(bu=="-")||(bu=="+")
r62
27{{{#!if bu="0"
r53
28}}}}}}}}}{{{#!if bd==-1
29{{{#!if this.bu=bs, bb="", bp=0+0
r51
30}}}}}}
r59
31
r61
32##유효성 검사.
33the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기. 소수점 위 최대 18자리, 소수점 아래 최대 18자리
r62
34{{{#!if au.length>19
r61
35error code of a 01번 : 오버플로
r62
36{{{#!if ea=1
r61
37}}}}}}
r62
38{{{#!if ab.length>19
r64
39warning code of a 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다.
r62
40{{{#!if wa=1, ab=ab.substr(0,18)
41}}}}}}
r60
42
r62
43{{{#!if bu.length>19
44error code of b 01번 : 오버플로
45{{{#!if eb=01
46}}}}}}
r63
47{{{#!if bb.length>19
r65
48warning code of b 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다.
r63
49{{{#!if wb=01, bb=bb.substr(0,18)
r62
50}}}}}}
51
r64
52##반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.
53error code 02 번 : 입력한 변수는 숫자로 읽을 수 없습니다. 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요.
r71
54
55덧셈과 뺄셈 계산과정을 적어봅니다.
56{{{#!if (f=="+")||(f=="-")
r81
57
58a과 b의 소수점 윗부분은 정수이므로 쉽게 계산할 수 있습니다.
59{{{#!if f=="+"
60{{{#!if ru=(+au)+(+bu)
61}}}}}}
62{{{#!if f=="-"
63{{{#!if ru=(+au)-(+bu)
64}}}}}}
65
66a와 b 모두가 정수이면 ad=a.indexOf("."), bd=b.indexOf(".") 모두 -1이고 ap==0, bp==0이 되며, 이런 경우에는 소수점 아래 자릿수를 검산할 필요가 없습니다. a와 b 중 소수점 아래 자릿수가 있는 수가 있을 때에만 소수점 윗자리의 계산값이 얼마가 나오느냐를 보면서 소수점 아래의 자릿수를 정리하는 과정이 의미가 있습니다.
67{{{#!if (ap>0)||(bp>0)
68만약 소수점 아래를 계산한다면 자릿수를 똑같이 맞춰야 의미가 있으므로, 자릿수가 다른 경우 자릿수가 같게 만드는 과정을 먼저 거칩니다.
r71
69{{{#!if ap>bp
r72
70이를테면 a의 소수점 자릿수가 b의 소수점 자릿수보다 많으면 b뒤에 0을 더 추가하는 방식으로 변경합니다. b 자체가 정수여도 앞에 (소수점이 없을 경우) 이미 bb="", bp=0+0으로 초기화했으므로 동작될 것입니다.
r71
71{{{#!if bp+=1, bb=bb+"0"
r72
72}}}}}}{{{#!if ap>bp
73{{{#!if bp+=1, bb=bb+"0"
74}}}}}}{{{#!if ap>bp
75{{{#!if bp+=1, bb=bb+"0"
76}}}}}}{{{#!if ap>bp
77{{{#!if bp+=1, bb=bb+"0"
78}}}}}}{{{#!if ap>bp
79{{{#!if bp+=1, bb=bb+"0"
r71
80}}}}}}
r72
81{{{#!if ap>bp
82{{{#!if bp+=1, bb=bb+"0"
83}}}}}}{{{#!if ap>bp
84{{{#!if bp+=1, bb=bb+"0"
85}}}}}}{{{#!if ap>bp
86{{{#!if bp+=1, bb=bb+"0"
87}}}}}}{{{#!if ap>bp
88{{{#!if bp+=1, bb=bb+"0"
89}}}}}}{{{#!if ap>bp
90{{{#!if bp+=1, bb=bb+"0"
91}}}}}}
92{{{#!if ap>bp
93{{{#!if bp+=1, bb=bb+"0"
94}}}}}}{{{#!if ap>bp
95{{{#!if bp+=1, bb=bb+"0"
96}}}}}}{{{#!if ap>bp
97{{{#!if bp+=1, bb=bb+"0"
98}}}}}}{{{#!if ap>bp
99{{{#!if bp+=1, bb=bb+"0"
100}}}}}}{{{#!if ap>bp
101{{{#!if bp+=1, bb=bb+"0"
102}}}}}}
103{{{#!if ap>bp
104{{{#!if bp+=1, bb=bb+"0"
105}}}}}}{{{#!if ap>bp
106{{{#!if bp+=1, bb=bb+"0"
107}}}}}}{{{#!if ap>bp
108{{{#!if bp+=1, bb=bb+"0"
109}}}}}}
r74
110소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18회.
r72
111
112반대로 b의 소수점 자릿수가 많은 경우도 있습니다.
113{{{#!if bp>ap
114{{{#!if ap+=1, ab=ab+"0"
115}}}}}}{{{#!if bp>ap
116{{{#!if ap+=1, ab=ab+"0"
117}}}}}}{{{#!if bp>ap
118{{{#!if ap+=1, ab=ab+"0"
119}}}}}}{{{#!if bp>ap
120{{{#!if ap+=1, ab=ab+"0"
121}}}}}}{{{#!if bp>ap
122{{{#!if ap+=1, ab=ab+"0"
123}}}}}}
124{{{#!if bp>ap
125{{{#!if ap+=1, ab=ab+"0"
126}}}}}}{{{#!if bp>ap
127{{{#!if ap+=1, ab=ab+"0"
128}}}}}}{{{#!if bp>ap
129{{{#!if ap+=1, ab=ab+"0"
130}}}}}}{{{#!if bp>ap
131{{{#!if ap+=1, ab=ab+"0"
132}}}}}}{{{#!if bp>ap
133{{{#!if ap+=1, ab=ab+"0"
134}}}}}}
135{{{#!if bp>ap
136{{{#!if ap+=1, ab=ab+"0"
137}}}}}}{{{#!if bp>ap
138{{{#!if ap+=1, ab=ab+"0"
139}}}}}}{{{#!if bp>ap
140{{{#!if ap+=1, ab=ab+"0"
141}}}}}}{{{#!if bp>ap
142{{{#!if ap+=1, ab=ab+"0"
143}}}}}}{{{#!if bp>ap
144{{{#!if ap+=1, ab=ab+"0"
145}}}}}}
146{{{#!if bp>ap
147{{{#!if ap+=1, ab=ab+"0"
148}}}}}}{{{#!if bp>ap
149{{{#!if ap+=1, ab=ab+"0"
150}}}}}}{{{#!if bp>ap
151{{{#!if ap+=1, ab=ab+"0"
152}}}}}}
r76
153위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다.
r71
154
r76
155a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다.
r73
156{{{#!if as[0]==45
157{{{#!if ab="-"+ab
158}}}}}}
r76
159마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다.
r73
160{{{#!if bs[0]==45
161{{{#!if bb="-"+bb
162}}}}}}
163
r81
164이때 rb를 계산합니다.
r70
165{{{#!if f=="+"
r81
166{{{#!if rb=(+ab)+(+bb)
r70
167}}}}}}
168{{{#!if f=="-"
r81
169{{{#!if rb=(+ab)-(+bb)
r70
170}}}}}}
r80
171
r74
172소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
173{{{#!if this.rb=rb.toString()
174}}}
r76
175문자열로 된 rb의 길이를 rp로 정의합니다.
r74
176{{{#!if this.rp=rb.length
177}}}
r78
178rb가 음수이면 rb의 첫번째(0번 index)의 문자열에는 마이너스(-)가 들어갑니다. 이 때는 rp를 rb의 마이너스 문자열을 세지 않은 자릿수가 되도록 앞에서 정의했던 rb.length에서 1만큼 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 값이 고정되어 있으므로 rp처럼 줄일 필요가 없습니다.
r74
179{{{#!if rb[0]==45
r75
180{{{#!if rp=rp-1
r74
181}}}}}}
r62
182
r80
183Case 1 : ru가 0보다 큰 경우
r76
184ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다.
r70
185{{{#!if ru>0
r80
186Case 1-1 : rb가 0 이상인 경우
r76
187{{{#!if +rb>=0
r78
188rb가 소수점 아래 자릿수를 초과하여 소수점 위의 수를 계산하게 생겼다면 ap=bp인 상황에서 rp>ap가 됩니다. rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
r76
189{{{#!if rp>ap
190{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r74
191}}}}}}
r78
192rb가 소수점 아래 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다.
r76
193{{{#!if rp<=ap
r77
194}}}
r78
195}}}
196
r80
197Case 1-2 : rb가 음수가 되는 경우 ru에서 1을 빌려옵니다. 1보다 작은 값에서 1보다 작은 값을 빼므로 -1보다 작을 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r78
198{{{#!if +rb<0
199{{{#!if ru=ru-1
200}}}
r80
201rb의 자릿수인 rp만큼 10을 제곱한 값으로 rb를 재정의합니다. 그러면 rb는 양수가 되며, rb를 다시 문자열로 변환합니다.
202{{{#!if rb=10**rp+(+rb)
r78
203}}}{{{#!if rb=rb.toString()
204}}}
205}}}
r80
206
r78
207정리과정을 끝냈으면 ru를 string으로 변환합니다.
208{{{#!if this.ru=ru.toString()
r76
209}}}}}}
210
r80
211Case 2 : ru가 0인 경우 ru가 0이 되면 rb의 값이 양수인지 음수인지에 따라 달라집니다.
r70
212{{{#!if ru==0
r80
213Case 2-1 : rb가 0 이상인 경우
r78
214{{{#!if +rb>=0
215rb가 양수이면서 rb가 자릿수를 초과한 경우 rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
216{{{#!if rp>ap
217{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
218}}}}}}}}}
r80
219Case 2-2 : rb가 음수인 경우
r78
220{{{#!if +rb<0
r80
221rb가 음수이면서 rb가 자릿수를 초과한 경우 값이 0인 ru에 1을 빼야 합니다. 그리고 rb가 "-"+숫자 꼴이므로 문자열의 1번 index에 해당하는 1을 지워야 합니다. 앞에서 rb가 음수인 경우 rp는 rb의 마이너스(-)가 차지하는 자릿수를 계산하지 않은 값 곧 숫자들이 차지하는 자릿수이므로, rb를 길이가 rp-1인 숫자들로 다시 정의합니다.
r78
222{{{#!if rp>ap
r80
223{{{#!if ru=ru-1, rb=rb.substr(2, rp-1)
224}}}}}}
225rb가 자릿수를 초과하지 않은 경우 rb에서 "-"를 뺀 문자열로 rb를 다시 정의합니다.
226{{{#if rp==ap
r81
227{{{#!if rb=rb.substr(1, rp)
r78
228}}}}}}}}}
229정리과정을 끝냈으면 ru를 string으로 변환합니다.
230{{{#!if this.ru=ru.toString()
r70
231}}}
r80
232-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우 ru 문자열 앞에 "-"를 붙입니다.
233f가 "+"인지 "-"인지에 따라 처음 rb를 정의할 때 적었던 식을 다시 불러옵니다.
234{{{#!if ((f=="+")&&((+ab)+(+bb)<0))||((f=="-")&&((+ab)-(+bb)<0))
235{{{#!if ru="-"+ru
236}}}}}}
r78
237}}}
r79
238
r80
239Case 3 : ru가 0보다 작은 경우. 곧 -1 이하인 음수가 되는 경우.
r70
240{{{#!if ru<0
r81
241Case 3-1 : rb가 0 이하인 경우
242{{{#!if +rb<=0
243rb가 음수이면서 자릿수를 초과한 경우 ru에 -1을 빼고, rb의 음수기호(-)와 첫번째 숫자인 문자열 "1"을 뺀 문자열로 rb를 다시 정의합니다.
244{{{#!if rp>ap
245{{{#!if rb=rb.substr(2, rp-1)}}}
r70
246}}}
r81
247rb가 자릿수를 초과하지 않은 경우 음수기호만을 뺀 문자열로 다시 정의합니다. 단, rb가 0이 되면 rp==1이 되므로 rb==0인 경우는 제외합니다.
248{{{#!if (rp==ap)&&(+rb<0)
249{{{#!if rb=rb.substr(1, rp-1)
250}}}}}}}}}
251Case 3-2 : rb가 0보다 큰 경우
252{{{#!if +rb>0
253
r80
254}}}
r81
255정리과정을 끝냈으면 ru를 string으로 변환합니다.
256{{{#!if this.ru=ru.toString()
257}}}
258-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우가 된다면 ru 문자열 앞에 "-"를 붙입니다.
259{{{#!if +ru==0
260{{{#!if ru="-"+ru
261}}}}}}
262}}}
263여기까지가 소수점 아래 자릿수 숫자들의 계산과정입니다.
264}}}
r76
265
r81
266여기까지가 덧셈 또는 뺄셈연산의 계산과정입니다.
267}}}
268
r67
269{{{#!if f=="*"
r69
27018자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
271다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
r67
272}}}
273
r65
274error code 03 번 : 오버플로
275error code 04 번 : 언더플로
276error code 05 번 : 0으로 나눌 수 없습니다.
r64
277
r67
278##여기까지 주석(주석 아님)
r85

(r83으로 되돌림)
279}}}}}}{{{#!wiki style="font-weight: 300; font-size: 20px;"
r82
280{{{#!if as[0]!=45
r53
281@a@}}}{{{#!if as[0]==45
282(@a@)}}}{{{#!if f=='+'
r67
283+}}}{{{#!if f=="-"
284-}}}{{{#!if f=="*"
285*}}}{{{#!if f=="/"
286/}}}{{{#!if bs[0]!=45
r53
287@b@}}}{{{#!if bs[0]==45
r57
288(@b@)}}}}}}
r44
289==# 2-1 #==
290{{{#!wiki style="font-weight: 300; font-size: 20px"
r37
291{{{#!if +a>=0
292@a@}}}{{{#!if +a<0
r36
293(@a@)}}} {{{#!if f == '+'
r40

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

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

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

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

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

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

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

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

(r16으로 되돌림)
309##1
r11
310{{{#!if p=r[o]
r9
311}}}{{{#!if p==45
312-}}}{{{#!if p==46
r14
313{{{#!if d=true
r20
314}}}}}}{{{#!if p==48
r9
3150}}}{{{#!if p==49
3161}}}{{{#!if p==50
3172}}}{{{#!if p==51
3183}}}{{{#!if p==52
3194}}}{{{#!if p==53
3205}}}{{{#!if p==54
3216}}}{{{#!if p==55
3227}}}{{{#!if p==56
3238}}}{{{#!if p==57
r41
3249}}}{{{#!if o+=1
r19
325}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
326##2
r11
327{{{#!if p=r[o]
r35
328}}}{{{#!if p==46
r14
329{{{#!if d=true
r20
330}}}}}}{{{#!if p==48
r9
3310}}}{{{#!if p==49
3321}}}{{{#!if p==50
3332}}}{{{#!if p==51
3343}}}{{{#!if p==52
3354}}}{{{#!if p==53
3365}}}{{{#!if p==54
3376}}}{{{#!if p==55
3387}}}{{{#!if p==56
3398}}}{{{#!if p==57
r41
3409}}}{{{#!if o+=1
r23
341}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
342##3
r11
343{{{#!if p=r[o]
r35
344}}}{{{#!if p==46
r14
345{{{#!if d=true
r20
346}}}}}}{{{#!if p==48
r9
3470}}}{{{#!if p==49
3481}}}{{{#!if p==50
3492}}}{{{#!if p==51
3503}}}{{{#!if p==52
3514}}}{{{#!if p==53
3525}}}{{{#!if p==54
3536}}}{{{#!if p==55
3547}}}{{{#!if p==56
3558}}}{{{#!if p==57
r41
3569}}}{{{#!if o+=1
r23
357}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
358##4
r11
359{{{#!if p=r[o]
r35
360}}}{{{#!if p==46
r14
361{{{#!if d=true
r20
362}}}}}}{{{#!if p==48
r9
3630}}}{{{#!if p==49
3641}}}{{{#!if p==50
3652}}}{{{#!if p==51
3663}}}{{{#!if p==52
3674}}}{{{#!if p==53
3685}}}{{{#!if p==54
3696}}}{{{#!if p==55
3707}}}{{{#!if p==56
3718}}}{{{#!if p==57
r41
3729}}}{{{#!if o+=1
r23
373}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
374##5
r11
375{{{#!if p=r[o]
r35
376}}}{{{#!if p==46
r14
377{{{#!if d=true
r20
378}}}}}}{{{#!if p==48
r9
3790}}}{{{#!if p==49
3801}}}{{{#!if p==50
3812}}}{{{#!if p==51
3823}}}{{{#!if p==52
3834}}}{{{#!if p==53
3845}}}{{{#!if p==54
3856}}}{{{#!if p==55
3867}}}{{{#!if p==56
3878}}}{{{#!if p==57
r41
3889}}}{{{#!if o+=1
r23
389}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
390##6
r11
391{{{#!if p=r[o]
r35
392}}}{{{#!if p==46
r14
393{{{#!if d=true
r20
394}}}}}}{{{#!if p==48
r9
3950}}}{{{#!if p==49
3961}}}{{{#!if p==50
3972}}}{{{#!if p==51
3983}}}{{{#!if p==52
3994}}}{{{#!if p==53
4005}}}{{{#!if p==54
4016}}}{{{#!if p==55
4027}}}{{{#!if p==56
4038}}}{{{#!if p==57
r41
4049}}}{{{#!if o+=1
r23
405}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
406##7
r11
407{{{#!if p=r[o]
r35
408}}}{{{#!if p==46
r14
409{{{#!if d=true
r20
410}}}}}}{{{#!if p==48
r9
4110}}}{{{#!if p==49
4121}}}{{{#!if p==50
4132}}}{{{#!if p==51
4143}}}{{{#!if p==52
4154}}}{{{#!if p==53
4165}}}{{{#!if p==54
4176}}}{{{#!if p==55
4187}}}{{{#!if p==56
4198}}}{{{#!if p==57
r41
4209}}}{{{#!if o+=1
r23
421}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
422##8
r11
423{{{#!if p=r[o]
r35
424}}}{{{#!if p==46
r14
425{{{#!if d=true
r20
426}}}}}}{{{#!if p==48
r9
4270}}}{{{#!if p==49
4281}}}{{{#!if p==50
4292}}}{{{#!if p==51
4303}}}{{{#!if p==52
4314}}}{{{#!if p==53
4325}}}{{{#!if p==54
4336}}}{{{#!if p==55
4347}}}{{{#!if p==56
4358}}}{{{#!if p==57
r41
4369}}}{{{#!if o+=1
r23
437}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
438##9
r11
439{{{#!if p=r[o]
r35
440}}}{{{#!if p==46
r14
441{{{#!if d=true
r20
442}}}}}}{{{#!if p==48
r9
4430}}}{{{#!if p==49
4441}}}{{{#!if p==50
4452}}}{{{#!if p==51
4463}}}{{{#!if p==52
4474}}}{{{#!if p==53
4485}}}{{{#!if p==54
4496}}}{{{#!if p==55
4507}}}{{{#!if p==56
4518}}}{{{#!if p==57
r41
4529}}}{{{#!if o+=1
r23
453}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
454##10
r11
455{{{#!if p=r[o]
r35
456}}}{{{#!if p==46
r14
457{{{#!if d=true
r20
458}}}}}}{{{#!if p==48
r9
4590}}}{{{#!if p==49
4601}}}{{{#!if p==50
4612}}}{{{#!if p==51
4623}}}{{{#!if p==52
4634}}}{{{#!if p==53
4645}}}{{{#!if p==54
4656}}}{{{#!if p==55
4667}}}{{{#!if p==56
4678}}}{{{#!if p==57
r41
4689}}}{{{#!if o+=1
r23
469}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
470##11
r11
471{{{#!if p=r[o]
r35
472}}}{{{#!if p==46
r14
473{{{#!if d=true
r20
474}}}}}}{{{#!if p==48
r9
4750}}}{{{#!if p==49
4761}}}{{{#!if p==50
4772}}}{{{#!if p==51
4783}}}{{{#!if p==52
4794}}}{{{#!if p==53
4805}}}{{{#!if p==54
4816}}}{{{#!if p==55
4827}}}{{{#!if p==56
4838}}}{{{#!if p==57
r41
4849}}}{{{#!if o+=1
r23
485}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
486##12
r11
487{{{#!if p=r[o]
r35
488}}}{{{#!if p==46
r14
489{{{#!if d=true
r20
490}}}}}}{{{#!if p==48
r9
4910}}}{{{#!if p==49
4921}}}{{{#!if p==50
4932}}}{{{#!if p==51
4943}}}{{{#!if p==52
4954}}}{{{#!if p==53
4965}}}{{{#!if p==54
4976}}}{{{#!if p==55
4987}}}{{{#!if p==56
4998}}}{{{#!if p==57
r41
5009}}}{{{#!if o+=1
r23
501}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
502##13
r11
503{{{#!if p=r[o]
r35
504}}}{{{#!if p==46
r14
505{{{#!if d=true
r20
506}}}}}}{{{#!if p==48
r9
5070}}}{{{#!if p==49
5081}}}{{{#!if p==50
5092}}}{{{#!if p==51
5103}}}{{{#!if p==52
5114}}}{{{#!if p==53
5125}}}{{{#!if p==54
5136}}}{{{#!if p==55
5147}}}{{{#!if p==56
5158}}}{{{#!if p==57
r41
5169}}}{{{#!if o+=1
r23
517}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
518##14
r11
519{{{#!if p=r[o]
r35
520}}}{{{#!if p==46
r14
521{{{#!if d=true
r20
522}}}}}}{{{#!if p==48
r9
5230}}}{{{#!if p==49
5241}}}{{{#!if p==50
5252}}}{{{#!if p==51
5263}}}{{{#!if p==52
5274}}}{{{#!if p==53
5285}}}{{{#!if p==54
5296}}}{{{#!if p==55
5307}}}{{{#!if p==56
5318}}}{{{#!if p==57
r41
5329}}}{{{#!if o+=1
r23
533}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
534##15
r11
535{{{#!if p=r[o]
r35
536}}}{{{#!if p==46
r14
537{{{#!if d=true
r20
538}}}}}}{{{#!if p==48
r9
5390}}}{{{#!if p==49
5401}}}{{{#!if p==50
5412}}}{{{#!if p==51
5423}}}{{{#!if p==52
5434}}}{{{#!if p==53
5445}}}{{{#!if p==54
5456}}}{{{#!if p==55
5467}}}{{{#!if p==56
5478}}}{{{#!if p==57
r41
5489}}}{{{#!if o+=1
r23
549}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
550##16
r11
551{{{#!if p=r[o]
r35
552}}}{{{#!if p==46
r14
553{{{#!if d=true
r20
554}}}}}}{{{#!if p==48
r9
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
r41
5649}}}{{{#!if o+=1
r23
565}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
566##17
r11
567{{{#!if p=r[o]
r35
568}}}{{{#!if p==46
r14
569{{{#!if d=true
r20
570}}}}}}{{{#!if p==48
r9
5710}}}{{{#!if p==49
5721}}}{{{#!if p==50
5732}}}{{{#!if p==51
5743}}}{{{#!if p==52
5754}}}{{{#!if p==53
5765}}}{{{#!if p==54
5776}}}{{{#!if p==55
5787}}}{{{#!if p==56
5798}}}{{{#!if p==57
r41
5809}}}{{{#!if o+=1
r23
581}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
582##18
r11
583{{{#!if p=r[o]
r35
584}}}{{{#!if p==46
r14
585{{{#!if d=true
r20
586}}}}}}{{{#!if p==48
r9
5870}}}{{{#!if p==49
5881}}}{{{#!if p==50
5892}}}{{{#!if p==51
5903}}}{{{#!if p==52
5914}}}{{{#!if p==53
5925}}}{{{#!if p==54
5936}}}{{{#!if p==55
5947}}}{{{#!if p==56
5958}}}{{{#!if p==57
r41
5969}}}{{{#!if o+=1
r23
597}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
598##19
r11
599{{{#!if p=r[o]
r35
600}}}{{{#!if p==46
r14
601{{{#!if d=true
r20
602}}}}}}{{{#!if p==48
r9
6030}}}{{{#!if p==49
6041}}}{{{#!if p==50
6052}}}{{{#!if p==51
6063}}}{{{#!if p==52
6074}}}{{{#!if p==53
6085}}}{{{#!if p==54
6096}}}{{{#!if p==55
6107}}}{{{#!if p==56
6118}}}{{{#!if p==57
r41
6129}}}{{{#!if o+=1
r23
613}}}}}}{{{#!if (o<l)&&(d==false)
r18

(r16으로 되돌림)
614##20
r11
615{{{#!if p=r[o]
r35
616}}}{{{#!if p==46
r14
617{{{#!if d=true
r20
618}}}}}}{{{#!if p==48
r9
6190}}}{{{#!if p==49
6201}}}{{{#!if p==50
6212}}}{{{#!if p==51
6223}}}{{{#!if p==52
6234}}}{{{#!if p==53
6245}}}{{{#!if p==54
6256}}}{{{#!if p==55
6267}}}{{{#!if p==56
6278}}}{{{#!if p==57
r41
6289}}}{{{#!if o+=1
r20
629}}}}}}{{{#!if o=0, l=u.length
630}}}{{{#!if u[0]==45
631##음수로 마이너스가 표시되면 넘기기
r41
632{{{#!if o+=1
r20
633}}}}}}{{{#!if l-o>2
634##소수점이 나오면 "0."으로 2자리 차지하므로 소수점 표기.
r41
635{{{#!if o+=1
r42
636##일의 자리 넘기기
r32
637}}}{{{#!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
638##".000000"은 표기하지 않음. 소수점 표기
639.{{{#!if o+=1
640}}}}}}}}}{{{#!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
641##1
r22
642{{{#!if p=u[o]
r21
643}}}{{{#!if p==48
r25
6440}}}{{{#!if p==49
r21
6451}}}{{{#!if p==50
6462}}}{{{#!if p==51
6473}}}{{{#!if p==52
6484}}}{{{#!if p==53
6495}}}{{{#!if p==54
6506}}}{{{#!if p==55
6517}}}{{{#!if p==56
6528}}}{{{#!if p==57
r41
6539}}}{{{#!if o+=1
r23
654}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48))
r21
655##2
r22
656{{{#!if p=u[o]
r21
657}}}{{{#!if p==48
6580}}}{{{#!if p==49
6591}}}{{{#!if p==50
6602}}}{{{#!if p==51
6613}}}{{{#!if p==52
6624}}}{{{#!if p==53
6635}}}{{{#!if p==54
6646}}}{{{#!if p==55
6657}}}{{{#!if p==56
6668}}}{{{#!if p==57
r41
6679}}}{{{#!if o+=1
r23
668}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48))
r21
669##3
r22
670{{{#!if p=u[o]
r21
671}}}{{{#!if p==48
6720}}}{{{#!if p==49
6731}}}{{{#!if p==50
6742}}}{{{#!if p==51
6753}}}{{{#!if p==52
6764}}}{{{#!if p==53
6775}}}{{{#!if p==54
6786}}}{{{#!if p==55
6797}}}{{{#!if p==56
6808}}}{{{#!if p==57
r41
6819}}}{{{#!if o+=1
r23
682}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48))
r21
683##4
r22
684{{{#!if p=u[o]
r21
685}}}{{{#!if p==48
6860}}}{{{#!if p==49
6871}}}{{{#!if p==50
6882}}}{{{#!if p==51
6893}}}{{{#!if p==52
6904}}}{{{#!if p==53
6915}}}{{{#!if p==54
6926}}}{{{#!if p==55
6937}}}{{{#!if p==56
6948}}}{{{#!if p==57
r41
6959}}}{{{#!if o+=1
r23
696}}}}}}{{{#!if (o<l)&&(d==true)&&(u[o+1]!=48)
r21
697##5
r22
698{{{#!if p=u[o]
r21
699}}}{{{#!if p==48
7000}}}{{{#!if p==49
7011}}}{{{#!if p==50
7022}}}{{{#!if p==51
7033}}}{{{#!if p==52
7044}}}{{{#!if p==53
7055}}}{{{#!if p==54
7066}}}{{{#!if p==55
7077}}}{{{#!if p==56
7088}}}{{{#!if p==57
r41
7099}}}{{{#!if o+=1
r23
710}}}}}}{{{#!if (o<l)&&(d==true)
r21
711##6
r22
712{{{#!if p=u[o]
r21
713}}}{{{#!if p==48
r26
714##"0" 미표기
715}}}{{{#!if p==49
r21
7161}}}{{{#!if p==50
7172}}}{{{#!if p==51
7183}}}{{{#!if p==52
7194}}}{{{#!if p==53
7205}}}{{{#!if p==54
7216}}}{{{#!if p==55
7227}}}{{{#!if p==56
7238}}}{{{#!if p==57
r41
7249}}}{{{#!if o+=1
r34
725}}}}}}}}}}}}