본문으로 건너뛰기

계산기2(r72판 Blame)

r72
r38
1[[분류:냥]][Include(틀:상세 내용, 설명대상=원본, 문서명=틀\:계산기)]
r39
2== 2-2 ==
r1
3{{{#!wiki style="font-weight: 300; font-size: 20px"
r61
4{{{#!wiki style="display: none"
r54
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);
r50
11'''ap''' : "a" # of places of decimal (integer); '''bp''' : "b" # of places of decimal (integer);
120.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
r70
13'''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string); '''rp''' : "result" # of places of decimal (integer)
r61
14{{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0
r48
15}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
16}}}{{{#!if ad!=-1
r51
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
r59
19}}}{{{#!if (au=="")||(au=="-")||(au=="+")
r53
20.12345 식으로 또는 -.12345 식으로 기입할 경우 upper 값을 0으로 부여함.
r57
21{{{#!if au="0"
r51
22}}}}}}}}}{{{#!if ad==-1
r48
23{{{#!if this.au=as, ab="", ap=0+0
24}}}}}}{{{#!if bd!=-1
r51
25{{{#!if this.bu=bs.substr.(0,bd), this.bb=bs.substr(bd+1, bl-bd-1), this.bp=bb.length
r59
26}}}{{{#!if (bu=="")||(bu=="-")||(bu=="+")
r57
27{{{#!if bu="0"
r48
28}}}}}}}}}{{{#!if bd==-1
29{{{#!if this.bu=bs, bb="", bp=0+0
r46
30}}}}}}
r54
31
r56
32##유효성 검사.
33the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기. 소수점 위 최대 18자리, 소수점 아래 최대 18자리
r57
34{{{#!if au.length>19
r56
35error code of a 01번 : 오버플로
r57
36{{{#!if ea=1
r56
37}}}}}}
r57
38{{{#!if ab.length>19
r59
39warning code of a 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다.
r57
40{{{#!if wa=1, ab=ab.substr(0,18)
41}}}}}}
r55
42
r57
43{{{#!if bu.length>19
44error code of b 01번 : 오버플로
45{{{#!if eb=01
46}}}}}}
r58
47{{{#!if bb.length>19
r60
48warning code of b 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다.
r58
49{{{#!if wb=01, bb=bb.substr(0,18)
r57
50}}}}}}
51
r59
52##반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.
53error code 02 번 : 입력한 변수는 숫자로 읽을 수 없습니다. 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요.
r66
54
55덧셈과 뺄셈 계산과정을 적어봅니다.
56{{{#!if (f=="+")||(f=="-")
57소수점 아래를 계산하려면 자릿수를 똑같이 맞춰야 의미가 있으므로, 자릿수가 다른 경우 자릿수가 같게 만드는 과정을 먼저 거칩니다.
58{{{#!if ap>bp
r67
59이를테면 a의 소수점 자릿수가 b의 소수점 자릿수보다 많으면 b뒤에 0을 더 추가하는 방식으로 변경합니다. b 자체가 정수여도 앞에 (소수점이 없을 경우) 이미 bb="", bp=0+0으로 초기화했으므로 동작될 것입니다.
r66
60{{{#!if bp+=1, bb=bb+"0"
r67
61}}}}}}{{{#!if ap>bp
62{{{#!if bp+=1, bb=bb+"0"
63}}}}}}{{{#!if ap>bp
64{{{#!if bp+=1, bb=bb+"0"
65}}}}}}{{{#!if ap>bp
66{{{#!if bp+=1, bb=bb+"0"
67}}}}}}{{{#!if ap>bp
68{{{#!if bp+=1, bb=bb+"0"
r66
69}}}}}}
r67
70{{{#!if ap>bp
71{{{#!if bp+=1, bb=bb+"0"
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"
80}}}}}}
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}}}}}}
r69
99소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18회.
r67
100
101반대로 b의 소수점 자릿수가 많은 경우도 있습니다.
102{{{#!if bp>ap
103{{{#!if ap+=1, ab=ab+"0"
104}}}}}}{{{#!if bp>ap
105{{{#!if ap+=1, ab=ab+"0"
106}}}}}}{{{#!if bp>ap
107{{{#!if ap+=1, ab=ab+"0"
108}}}}}}{{{#!if bp>ap
109{{{#!if ap+=1, ab=ab+"0"
110}}}}}}{{{#!if bp>ap
111{{{#!if ap+=1, ab=ab+"0"
112}}}}}}
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}}}}}}
r66
142}}}
r71
143위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다.
r66
144
r71
145a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다.
r68
146{{{#!if as[0]==45
147{{{#!if ab="-"+ab
148}}}}}}
r71
149마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다.
r68
150{{{#!if bs[0]==45
151{{{#!if bb="-"+bb
152}}}}}}
153
r65
154{{{#!if f=="+"
155{{{#!if ru=(+au)+(+bu), rb=(+ab)+(+bb)
156}}}}}}
157{{{#!if f=="-"
r66
158뺄셈은 덧셈의 역연산이고 구조가 단순하므로 덧셈과 뺄셈을 먼저 같이 처리합니다. ru, rb는 각각 정수 값으로 나올 것입니다.
r65
159{{{#!if ru=(+au)-(+bu), rb=(+ab)-(+bb)
160}}}}}}
r69
161소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
162{{{#!if this.rb=rb.toString()
163}}}
r71
164문자열로 된 rb의 길이를 rp로 정의합니다.
r69
165{{{#!if this.rp=rb.length
166}}}
r71
167rb가 음수이면 rp를 -1로 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 고정되어 있으므로 줄일 필요가 없습니다.
r69
168{{{#!if rb[0]==45
r70
169{{{#!if rp=rp-1
r69
170}}}}}}
r57
171
r71
172ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다.
r65
173{{{#!if ru>0
r71
174{{{#!if +rb>=0
175rb가 자릿수를 초과할 경우 ap=bp인 상황에서 rp>ap가 됩니다. rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
176{{{#!if rp>ap
177{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r69
178}}}}}}
r71
179rb가 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다.
180{{{#!if rp<=ap
r72
181}}}
r71
182}}}}}}
183
r65
184{{{#!if ru==0
185}}}
186{{{#!if ru<0
187}}}
r71
188
189
r62
190{{{#!if f=="*"
r64
19118자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
192다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
r62
193}}}
194
r60
195error code 03 번 : 오버플로
196error code 04 번 : 언더플로
197error code 05 번 : 0으로 나눌 수 없습니다.
r59
198
r62
199##여기까지 주석(주석 아님)
r49
200}}}{{{#!if as[0]!=45
r48
201@a@}}}{{{#!if as[0]==45
202(@a@)}}}{{{#!if f=='+'
r62
203+}}}{{{#!if f=="-"
204-}}}{{{#!if f=="*"
205*}}}{{{#!if f=="/"
206/}}}{{{#!if bs[0]!=45
r48
207@b@}}}{{{#!if bs[0]==45
r52
208(@b@)}}}}}}
r39
209==# 2-1 #==
210{{{#!wiki style="font-weight: 300; font-size: 20px"
r33
211{{{#!if +a>=0
212@a@}}}{{{#!if +a<0
r32
213(@a@)}}} {{{#!if f == '+'
r13
214{{{#!if r =(+a)+(+b)+0.0, u=(+a)+(+b)
r1
215}}}+}}}{{{#!if f == '-'
r13
216{{{#!if r =(+a)-(+b)+0.0, u=(+a)-(+b)
r1
217}}}-}}}{{{#!if f == '*'
r13
218{{{#!if r =((+a)+0.0)*((+b)+0.0), u=(+a)*(+b)
r1
219}}}×}}}{{{#!if f == '/'
r13
220{{{#!if r =((+a)+0.0)/((+b)+0.0), u=(+a)/(+b)
r33
221}}}÷}}} {{{#!if +b>=0
222@b@}}}{{{#!if +b<0
r32
223(@b@)}}} = {{{#!if u=r-u, d=false
r14
224##u : 나누어떨어지는 부분 절삭하기. d : dot 매김 여부
r16
225}}}{{{#!if r=r.toString(), u=u.toString()
r8
226}}}{{{#!if o=0, l=r.length
r9
227}}}{{{#!if (r!=null)&&(r!="")
228{{{#!if +o<l
r14
229##1
r9
230{{{#!if p=r[o]
r7
231}}}{{{#!if p==45
232-}}}{{{#!if p==46
r12
233{{{#!if d=true
r16
234}}}}}}{{{#!if p==48
r7
2350}}}{{{#!if p==49
2361}}}{{{#!if p==50
2372}}}{{{#!if p==51
2383}}}{{{#!if p==52
2394}}}{{{#!if p==53
2405}}}{{{#!if p==54
2416}}}{{{#!if p==55
2427}}}{{{#!if p==56
2438}}}{{{#!if p==57
r36
2449}}}{{{#!if o+=1
r15
245}}}}}}{{{#!if (o<l)&&(d==false)
r14
246##2
r9
247{{{#!if p=r[o]
r31
248}}}{{{#!if p==46
r12
249{{{#!if d=true
r16
250}}}}}}{{{#!if p==48
r7
2510}}}{{{#!if p==49
2521}}}{{{#!if p==50
2532}}}{{{#!if p==51
2543}}}{{{#!if p==52
2554}}}{{{#!if p==53
2565}}}{{{#!if p==54
2576}}}{{{#!if p==55
2587}}}{{{#!if p==56
2598}}}{{{#!if p==57
r36
2609}}}{{{#!if o+=1
r19
261}}}}}}{{{#!if (o<l)&&(d==false)
r14
262##3
r9
263{{{#!if p=r[o]
r31
264}}}{{{#!if p==46
r12
265{{{#!if d=true
r16
266}}}}}}{{{#!if p==48
r7
2670}}}{{{#!if p==49
2681}}}{{{#!if p==50
2692}}}{{{#!if p==51
2703}}}{{{#!if p==52
2714}}}{{{#!if p==53
2725}}}{{{#!if p==54
2736}}}{{{#!if p==55
2747}}}{{{#!if p==56
2758}}}{{{#!if p==57
r36
2769}}}{{{#!if o+=1
r19
277}}}}}}{{{#!if (o<l)&&(d==false)
r14
278##4
r9
279{{{#!if p=r[o]
r31
280}}}{{{#!if p==46
r12
281{{{#!if d=true
r16
282}}}}}}{{{#!if p==48
r7
2830}}}{{{#!if p==49
2841}}}{{{#!if p==50
2852}}}{{{#!if p==51
2863}}}{{{#!if p==52
2874}}}{{{#!if p==53
2885}}}{{{#!if p==54
2896}}}{{{#!if p==55
2907}}}{{{#!if p==56
2918}}}{{{#!if p==57
r36
2929}}}{{{#!if o+=1
r19
293}}}}}}{{{#!if (o<l)&&(d==false)
r14
294##5
r9
295{{{#!if p=r[o]
r31
296}}}{{{#!if p==46
r12
297{{{#!if d=true
r16
298}}}}}}{{{#!if p==48
r7
2990}}}{{{#!if p==49
3001}}}{{{#!if p==50
3012}}}{{{#!if p==51
3023}}}{{{#!if p==52
3034}}}{{{#!if p==53
3045}}}{{{#!if p==54
3056}}}{{{#!if p==55
3067}}}{{{#!if p==56
3078}}}{{{#!if p==57
r36
3089}}}{{{#!if o+=1
r19
309}}}}}}{{{#!if (o<l)&&(d==false)
r14
310##6
r9
311{{{#!if p=r[o]
r31
312}}}{{{#!if p==46
r12
313{{{#!if d=true
r16
314}}}}}}{{{#!if p==48
r7
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
r36
3249}}}{{{#!if o+=1
r19
325}}}}}}{{{#!if (o<l)&&(d==false)
r14
326##7
r9
327{{{#!if p=r[o]
r31
328}}}{{{#!if p==46
r12
329{{{#!if d=true
r16
330}}}}}}{{{#!if p==48
r7
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
r36
3409}}}{{{#!if o+=1
r19
341}}}}}}{{{#!if (o<l)&&(d==false)
r14
342##8
r9
343{{{#!if p=r[o]
r31
344}}}{{{#!if p==46
r12
345{{{#!if d=true
r16
346}}}}}}{{{#!if p==48
r7
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
r36
3569}}}{{{#!if o+=1
r19
357}}}}}}{{{#!if (o<l)&&(d==false)
r14
358##9
r9
359{{{#!if p=r[o]
r31
360}}}{{{#!if p==46
r12
361{{{#!if d=true
r16
362}}}}}}{{{#!if p==48
r7
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
r36
3729}}}{{{#!if o+=1
r19
373}}}}}}{{{#!if (o<l)&&(d==false)
r14
374##10
r9
375{{{#!if p=r[o]
r31
376}}}{{{#!if p==46
r12
377{{{#!if d=true
r16
378}}}}}}{{{#!if p==48
r7
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
r36
3889}}}{{{#!if o+=1
r19
389}}}}}}{{{#!if (o<l)&&(d==false)
r14
390##11
r9
391{{{#!if p=r[o]
r31
392}}}{{{#!if p==46
r12
393{{{#!if d=true
r16
394}}}}}}{{{#!if p==48
r7
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
r36
4049}}}{{{#!if o+=1
r19
405}}}}}}{{{#!if (o<l)&&(d==false)
r14
406##12
r9
407{{{#!if p=r[o]
r31
408}}}{{{#!if p==46
r12
409{{{#!if d=true
r16
410}}}}}}{{{#!if p==48
r7
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
r36
4209}}}{{{#!if o+=1
r19
421}}}}}}{{{#!if (o<l)&&(d==false)
r14
422##13
r9
423{{{#!if p=r[o]
r31
424}}}{{{#!if p==46
r12
425{{{#!if d=true
r16
426}}}}}}{{{#!if p==48
r7
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
r36
4369}}}{{{#!if o+=1
r19
437}}}}}}{{{#!if (o<l)&&(d==false)
r14
438##14
r9
439{{{#!if p=r[o]
r31
440}}}{{{#!if p==46
r12
441{{{#!if d=true
r16
442}}}}}}{{{#!if p==48
r7
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
r36
4529}}}{{{#!if o+=1
r19
453}}}}}}{{{#!if (o<l)&&(d==false)
r14
454##15
r9
455{{{#!if p=r[o]
r31
456}}}{{{#!if p==46
r12
457{{{#!if d=true
r16
458}}}}}}{{{#!if p==48
r7
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
r36
4689}}}{{{#!if o+=1
r19
469}}}}}}{{{#!if (o<l)&&(d==false)
r14
470##16
r9
471{{{#!if p=r[o]
r31
472}}}{{{#!if p==46
r12
473{{{#!if d=true
r16
474}}}}}}{{{#!if p==48
r7
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
r36
4849}}}{{{#!if o+=1
r19
485}}}}}}{{{#!if (o<l)&&(d==false)
r14
486##17
r9
487{{{#!if p=r[o]
r31
488}}}{{{#!if p==46
r12
489{{{#!if d=true
r16
490}}}}}}{{{#!if p==48
r7
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
r36
5009}}}{{{#!if o+=1
r19
501}}}}}}{{{#!if (o<l)&&(d==false)
r14
502##18
r9
503{{{#!if p=r[o]
r31
504}}}{{{#!if p==46
r12
505{{{#!if d=true
r16
506}}}}}}{{{#!if p==48
r7
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
r36
5169}}}{{{#!if o+=1
r19
517}}}}}}{{{#!if (o<l)&&(d==false)
r14
518##19
r9
519{{{#!if p=r[o]
r31
520}}}{{{#!if p==46
r12
521{{{#!if d=true
r16
522}}}}}}{{{#!if p==48
r7
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
r36
5329}}}{{{#!if o+=1
r19
533}}}}}}{{{#!if (o<l)&&(d==false)
r14
534##20
r9
535{{{#!if p=r[o]
r31
536}}}{{{#!if p==46
r12
537{{{#!if d=true
r16
538}}}}}}{{{#!if p==48
r7
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
r36
5489}}}{{{#!if o+=1
r16
549}}}}}}{{{#!if o=0, l=u.length
550}}}{{{#!if u[0]==45
551##음수로 마이너스가 표시되면 넘기기
r36
552{{{#!if o+=1
r16
553}}}}}}{{{#!if l-o>2
554##소수점이 나오면 "0."으로 2자리 차지하므로 소수점 표기.
r36
555{{{#!if o+=1
r37
556##일의 자리 넘기기
r28
557}}}{{{#!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)
r37
558##".000000"은 표기하지 않음. 소수점 표기
559.{{{#!if o+=1
560}}}}}}}}}{{{#!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))
r17
561##1
r18
562{{{#!if p=u[o]
r17
563}}}{{{#!if p==48
r21
5640}}}{{{#!if p==49
r17
5651}}}{{{#!if p==50
5662}}}{{{#!if p==51
5673}}}{{{#!if p==52
5684}}}{{{#!if p==53
5695}}}{{{#!if p==54
5706}}}{{{#!if p==55
5717}}}{{{#!if p==56
5728}}}{{{#!if p==57
r36
5739}}}{{{#!if o+=1
r19
574}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48))
r17
575##2
r18
576{{{#!if p=u[o]
r17
577}}}{{{#!if p==48
5780}}}{{{#!if p==49
5791}}}{{{#!if p==50
5802}}}{{{#!if p==51
5813}}}{{{#!if p==52
5824}}}{{{#!if p==53
5835}}}{{{#!if p==54
5846}}}{{{#!if p==55
5857}}}{{{#!if p==56
5868}}}{{{#!if p==57
r36
5879}}}{{{#!if o+=1
r19
588}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48))
r17
589##3
r18
590{{{#!if p=u[o]
r17
591}}}{{{#!if p==48
5920}}}{{{#!if p==49
5931}}}{{{#!if p==50
5942}}}{{{#!if p==51
5953}}}{{{#!if p==52
5964}}}{{{#!if p==53
5975}}}{{{#!if p==54
5986}}}{{{#!if p==55
5997}}}{{{#!if p==56
6008}}}{{{#!if p==57
r36
6019}}}{{{#!if o+=1
r19
602}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48))
r17
603##4
r18
604{{{#!if p=u[o]
r17
605}}}{{{#!if p==48
6060}}}{{{#!if p==49
6071}}}{{{#!if p==50
6082}}}{{{#!if p==51
6093}}}{{{#!if p==52
6104}}}{{{#!if p==53
6115}}}{{{#!if p==54
6126}}}{{{#!if p==55
6137}}}{{{#!if p==56
6148}}}{{{#!if p==57
r36
6159}}}{{{#!if o+=1
r19
616}}}}}}{{{#!if (o<l)&&(d==true)&&(u[o+1]!=48)
r17
617##5
r18
618{{{#!if p=u[o]
r17
619}}}{{{#!if p==48
6200}}}{{{#!if p==49
6211}}}{{{#!if p==50
6222}}}{{{#!if p==51
6233}}}{{{#!if p==52
6244}}}{{{#!if p==53
6255}}}{{{#!if p==54
6266}}}{{{#!if p==55
6277}}}{{{#!if p==56
6288}}}{{{#!if p==57
r36
6299}}}{{{#!if o+=1
r19
630}}}}}}{{{#!if (o<l)&&(d==true)
r17
631##6
r18
632{{{#!if p=u[o]
r17
633}}}{{{#!if p==48
r22
634##"0" 미표기
635}}}{{{#!if p==49
r17
6361}}}{{{#!if p==50
6372}}}{{{#!if p==51
6383}}}{{{#!if p==52
6394}}}{{{#!if p==53
6405}}}{{{#!if p==54
6416}}}{{{#!if p==55
6427}}}{{{#!if p==56
6438}}}{{{#!if p==57
r36
6449}}}{{{#!if o+=1
r30
645}}}}}}}}}}}}