본문으로 건너뛰기

계산기2(r65판 Blame)

r65
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은 다른 수이므로 자리수가 다름을 표시할 용도
13'''ru''' : result upper value (integer); '''rb''' : result below value (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 번 : 입력한 변수는 숫자로 읽을 수 없습니다. 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요.
r65
54{{{#!if f=="+"
55{{{#!if ru=(+au)+(+bu), rb=(+ab)+(+bb)
56}}}}}}
57{{{#!if f=="-"
58뺄셈은 덧셈의 역연산이고 구조가 단순하므로 덧셈과 뺄셈을 먼저 처리합니다. ru, rb는 각각 정수 값으로 나올 것입니다.
59{{{#!if ru=(+au)-(+bu), rb=(+ab)-(+bb)
60}}}}}}
r57
61
r65
62{{{#!if ru>0
63ru는 정수이므로 0보다 크면 곧 1 이상이며, 1 이상이면 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다.
64}}}
65{{{#!if ru==0
66}}}
67{{{#!if ru<0
68}}}
r62
69{{{#!if f=="*"
r64
7018자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
71다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
r62
72}}}
73
r60
74error code 03 번 : 오버플로
75error code 04 번 : 언더플로
76error code 05 번 : 0으로 나눌 수 없습니다.
r59
77
r62
78##여기까지 주석(주석 아님)
r49
79}}}{{{#!if as[0]!=45
r48
80@a@}}}{{{#!if as[0]==45
81(@a@)}}}{{{#!if f=='+'
r62
82+}}}{{{#!if f=="-"
83-}}}{{{#!if f=="*"
84*}}}{{{#!if f=="/"
85/}}}{{{#!if bs[0]!=45
r48
86@b@}}}{{{#!if bs[0]==45
r52
87(@b@)}}}}}}
r39
88==# 2-1 #==
89{{{#!wiki style="font-weight: 300; font-size: 20px"
r33
90{{{#!if +a>=0
91@a@}}}{{{#!if +a<0
r32
92(@a@)}}} {{{#!if f == '+'
r13
93{{{#!if r =(+a)+(+b)+0.0, u=(+a)+(+b)
r1
94}}}+}}}{{{#!if f == '-'
r13
95{{{#!if r =(+a)-(+b)+0.0, u=(+a)-(+b)
r1
96}}}-}}}{{{#!if f == '*'
r13
97{{{#!if r =((+a)+0.0)*((+b)+0.0), u=(+a)*(+b)
r1
98}}}×}}}{{{#!if f == '/'
r13
99{{{#!if r =((+a)+0.0)/((+b)+0.0), u=(+a)/(+b)
r33
100}}}÷}}} {{{#!if +b>=0
101@b@}}}{{{#!if +b<0
r32
102(@b@)}}} = {{{#!if u=r-u, d=false
r14
103##u : 나누어떨어지는 부분 절삭하기. d : dot 매김 여부
r16
104}}}{{{#!if r=r.toString(), u=u.toString()
r8
105}}}{{{#!if o=0, l=r.length
r9
106}}}{{{#!if (r!=null)&&(r!="")
107{{{#!if +o<l
r14
108##1
r9
109{{{#!if p=r[o]
r7
110}}}{{{#!if p==45
111-}}}{{{#!if p==46
r12
112{{{#!if d=true
r16
113}}}}}}{{{#!if p==48
r7
1140}}}{{{#!if p==49
1151}}}{{{#!if p==50
1162}}}{{{#!if p==51
1173}}}{{{#!if p==52
1184}}}{{{#!if p==53
1195}}}{{{#!if p==54
1206}}}{{{#!if p==55
1217}}}{{{#!if p==56
1228}}}{{{#!if p==57
r36
1239}}}{{{#!if o+=1
r15
124}}}}}}{{{#!if (o<l)&&(d==false)
r14
125##2
r9
126{{{#!if p=r[o]
r31
127}}}{{{#!if p==46
r12
128{{{#!if d=true
r16
129}}}}}}{{{#!if p==48
r7
1300}}}{{{#!if p==49
1311}}}{{{#!if p==50
1322}}}{{{#!if p==51
1333}}}{{{#!if p==52
1344}}}{{{#!if p==53
1355}}}{{{#!if p==54
1366}}}{{{#!if p==55
1377}}}{{{#!if p==56
1388}}}{{{#!if p==57
r36
1399}}}{{{#!if o+=1
r19
140}}}}}}{{{#!if (o<l)&&(d==false)
r14
141##3
r9
142{{{#!if p=r[o]
r31
143}}}{{{#!if p==46
r12
144{{{#!if d=true
r16
145}}}}}}{{{#!if p==48
r7
1460}}}{{{#!if p==49
1471}}}{{{#!if p==50
1482}}}{{{#!if p==51
1493}}}{{{#!if p==52
1504}}}{{{#!if p==53
1515}}}{{{#!if p==54
1526}}}{{{#!if p==55
1537}}}{{{#!if p==56
1548}}}{{{#!if p==57
r36
1559}}}{{{#!if o+=1
r19
156}}}}}}{{{#!if (o<l)&&(d==false)
r14
157##4
r9
158{{{#!if p=r[o]
r31
159}}}{{{#!if p==46
r12
160{{{#!if d=true
r16
161}}}}}}{{{#!if p==48
r7
1620}}}{{{#!if p==49
1631}}}{{{#!if p==50
1642}}}{{{#!if p==51
1653}}}{{{#!if p==52
1664}}}{{{#!if p==53
1675}}}{{{#!if p==54
1686}}}{{{#!if p==55
1697}}}{{{#!if p==56
1708}}}{{{#!if p==57
r36
1719}}}{{{#!if o+=1
r19
172}}}}}}{{{#!if (o<l)&&(d==false)
r14
173##5
r9
174{{{#!if p=r[o]
r31
175}}}{{{#!if p==46
r12
176{{{#!if d=true
r16
177}}}}}}{{{#!if p==48
r7
1780}}}{{{#!if p==49
1791}}}{{{#!if p==50
1802}}}{{{#!if p==51
1813}}}{{{#!if p==52
1824}}}{{{#!if p==53
1835}}}{{{#!if p==54
1846}}}{{{#!if p==55
1857}}}{{{#!if p==56
1868}}}{{{#!if p==57
r36
1879}}}{{{#!if o+=1
r19
188}}}}}}{{{#!if (o<l)&&(d==false)
r14
189##6
r9
190{{{#!if p=r[o]
r31
191}}}{{{#!if p==46
r12
192{{{#!if d=true
r16
193}}}}}}{{{#!if p==48
r7
1940}}}{{{#!if p==49
1951}}}{{{#!if p==50
1962}}}{{{#!if p==51
1973}}}{{{#!if p==52
1984}}}{{{#!if p==53
1995}}}{{{#!if p==54
2006}}}{{{#!if p==55
2017}}}{{{#!if p==56
2028}}}{{{#!if p==57
r36
2039}}}{{{#!if o+=1
r19
204}}}}}}{{{#!if (o<l)&&(d==false)
r14
205##7
r9
206{{{#!if p=r[o]
r31
207}}}{{{#!if p==46
r12
208{{{#!if d=true
r16
209}}}}}}{{{#!if p==48
r7
2100}}}{{{#!if p==49
2111}}}{{{#!if p==50
2122}}}{{{#!if p==51
2133}}}{{{#!if p==52
2144}}}{{{#!if p==53
2155}}}{{{#!if p==54
2166}}}{{{#!if p==55
2177}}}{{{#!if p==56
2188}}}{{{#!if p==57
r36
2199}}}{{{#!if o+=1
r19
220}}}}}}{{{#!if (o<l)&&(d==false)
r14
221##8
r9
222{{{#!if p=r[o]
r31
223}}}{{{#!if p==46
r12
224{{{#!if d=true
r16
225}}}}}}{{{#!if p==48
r7
2260}}}{{{#!if p==49
2271}}}{{{#!if p==50
2282}}}{{{#!if p==51
2293}}}{{{#!if p==52
2304}}}{{{#!if p==53
2315}}}{{{#!if p==54
2326}}}{{{#!if p==55
2337}}}{{{#!if p==56
2348}}}{{{#!if p==57
r36
2359}}}{{{#!if o+=1
r19
236}}}}}}{{{#!if (o<l)&&(d==false)
r14
237##9
r9
238{{{#!if p=r[o]
r31
239}}}{{{#!if p==46
r12
240{{{#!if d=true
r16
241}}}}}}{{{#!if p==48
r7
2420}}}{{{#!if p==49
2431}}}{{{#!if p==50
2442}}}{{{#!if p==51
2453}}}{{{#!if p==52
2464}}}{{{#!if p==53
2475}}}{{{#!if p==54
2486}}}{{{#!if p==55
2497}}}{{{#!if p==56
2508}}}{{{#!if p==57
r36
2519}}}{{{#!if o+=1
r19
252}}}}}}{{{#!if (o<l)&&(d==false)
r14
253##10
r9
254{{{#!if p=r[o]
r31
255}}}{{{#!if p==46
r12
256{{{#!if d=true
r16
257}}}}}}{{{#!if p==48
r7
2580}}}{{{#!if p==49
2591}}}{{{#!if p==50
2602}}}{{{#!if p==51
2613}}}{{{#!if p==52
2624}}}{{{#!if p==53
2635}}}{{{#!if p==54
2646}}}{{{#!if p==55
2657}}}{{{#!if p==56
2668}}}{{{#!if p==57
r36
2679}}}{{{#!if o+=1
r19
268}}}}}}{{{#!if (o<l)&&(d==false)
r14
269##11
r9
270{{{#!if p=r[o]
r31
271}}}{{{#!if p==46
r12
272{{{#!if d=true
r16
273}}}}}}{{{#!if p==48
r7
2740}}}{{{#!if p==49
2751}}}{{{#!if p==50
2762}}}{{{#!if p==51
2773}}}{{{#!if p==52
2784}}}{{{#!if p==53
2795}}}{{{#!if p==54
2806}}}{{{#!if p==55
2817}}}{{{#!if p==56
2828}}}{{{#!if p==57
r36
2839}}}{{{#!if o+=1
r19
284}}}}}}{{{#!if (o<l)&&(d==false)
r14
285##12
r9
286{{{#!if p=r[o]
r31
287}}}{{{#!if p==46
r12
288{{{#!if d=true
r16
289}}}}}}{{{#!if p==48
r7
2900}}}{{{#!if p==49
2911}}}{{{#!if p==50
2922}}}{{{#!if p==51
2933}}}{{{#!if p==52
2944}}}{{{#!if p==53
2955}}}{{{#!if p==54
2966}}}{{{#!if p==55
2977}}}{{{#!if p==56
2988}}}{{{#!if p==57
r36
2999}}}{{{#!if o+=1
r19
300}}}}}}{{{#!if (o<l)&&(d==false)
r14
301##13
r9
302{{{#!if p=r[o]
r31
303}}}{{{#!if p==46
r12
304{{{#!if d=true
r16
305}}}}}}{{{#!if p==48
r7
3060}}}{{{#!if p==49
3071}}}{{{#!if p==50
3082}}}{{{#!if p==51
3093}}}{{{#!if p==52
3104}}}{{{#!if p==53
3115}}}{{{#!if p==54
3126}}}{{{#!if p==55
3137}}}{{{#!if p==56
3148}}}{{{#!if p==57
r36
3159}}}{{{#!if o+=1
r19
316}}}}}}{{{#!if (o<l)&&(d==false)
r14
317##14
r9
318{{{#!if p=r[o]
r31
319}}}{{{#!if p==46
r12
320{{{#!if d=true
r16
321}}}}}}{{{#!if p==48
r7
3220}}}{{{#!if p==49
3231}}}{{{#!if p==50
3242}}}{{{#!if p==51
3253}}}{{{#!if p==52
3264}}}{{{#!if p==53
3275}}}{{{#!if p==54
3286}}}{{{#!if p==55
3297}}}{{{#!if p==56
3308}}}{{{#!if p==57
r36
3319}}}{{{#!if o+=1
r19
332}}}}}}{{{#!if (o<l)&&(d==false)
r14
333##15
r9
334{{{#!if p=r[o]
r31
335}}}{{{#!if p==46
r12
336{{{#!if d=true
r16
337}}}}}}{{{#!if p==48
r7
3380}}}{{{#!if p==49
3391}}}{{{#!if p==50
3402}}}{{{#!if p==51
3413}}}{{{#!if p==52
3424}}}{{{#!if p==53
3435}}}{{{#!if p==54
3446}}}{{{#!if p==55
3457}}}{{{#!if p==56
3468}}}{{{#!if p==57
r36
3479}}}{{{#!if o+=1
r19
348}}}}}}{{{#!if (o<l)&&(d==false)
r14
349##16
r9
350{{{#!if p=r[o]
r31
351}}}{{{#!if p==46
r12
352{{{#!if d=true
r16
353}}}}}}{{{#!if p==48
r7
3540}}}{{{#!if p==49
3551}}}{{{#!if p==50
3562}}}{{{#!if p==51
3573}}}{{{#!if p==52
3584}}}{{{#!if p==53
3595}}}{{{#!if p==54
3606}}}{{{#!if p==55
3617}}}{{{#!if p==56
3628}}}{{{#!if p==57
r36
3639}}}{{{#!if o+=1
r19
364}}}}}}{{{#!if (o<l)&&(d==false)
r14
365##17
r9
366{{{#!if p=r[o]
r31
367}}}{{{#!if p==46
r12
368{{{#!if d=true
r16
369}}}}}}{{{#!if p==48
r7
3700}}}{{{#!if p==49
3711}}}{{{#!if p==50
3722}}}{{{#!if p==51
3733}}}{{{#!if p==52
3744}}}{{{#!if p==53
3755}}}{{{#!if p==54
3766}}}{{{#!if p==55
3777}}}{{{#!if p==56
3788}}}{{{#!if p==57
r36
3799}}}{{{#!if o+=1
r19
380}}}}}}{{{#!if (o<l)&&(d==false)
r14
381##18
r9
382{{{#!if p=r[o]
r31
383}}}{{{#!if p==46
r12
384{{{#!if d=true
r16
385}}}}}}{{{#!if p==48
r7
3860}}}{{{#!if p==49
3871}}}{{{#!if p==50
3882}}}{{{#!if p==51
3893}}}{{{#!if p==52
3904}}}{{{#!if p==53
3915}}}{{{#!if p==54
3926}}}{{{#!if p==55
3937}}}{{{#!if p==56
3948}}}{{{#!if p==57
r36
3959}}}{{{#!if o+=1
r19
396}}}}}}{{{#!if (o<l)&&(d==false)
r14
397##19
r9
398{{{#!if p=r[o]
r31
399}}}{{{#!if p==46
r12
400{{{#!if d=true
r16
401}}}}}}{{{#!if p==48
r7
4020}}}{{{#!if p==49
4031}}}{{{#!if p==50
4042}}}{{{#!if p==51
4053}}}{{{#!if p==52
4064}}}{{{#!if p==53
4075}}}{{{#!if p==54
4086}}}{{{#!if p==55
4097}}}{{{#!if p==56
4108}}}{{{#!if p==57
r36
4119}}}{{{#!if o+=1
r19
412}}}}}}{{{#!if (o<l)&&(d==false)
r14
413##20
r9
414{{{#!if p=r[o]
r31
415}}}{{{#!if p==46
r12
416{{{#!if d=true
r16
417}}}}}}{{{#!if p==48
r7
4180}}}{{{#!if p==49
4191}}}{{{#!if p==50
4202}}}{{{#!if p==51
4213}}}{{{#!if p==52
4224}}}{{{#!if p==53
4235}}}{{{#!if p==54
4246}}}{{{#!if p==55
4257}}}{{{#!if p==56
4268}}}{{{#!if p==57
r36
4279}}}{{{#!if o+=1
r16
428}}}}}}{{{#!if o=0, l=u.length
429}}}{{{#!if u[0]==45
430##음수로 마이너스가 표시되면 넘기기
r36
431{{{#!if o+=1
r16
432}}}}}}{{{#!if l-o>2
433##소수점이 나오면 "0."으로 2자리 차지하므로 소수점 표기.
r36
434{{{#!if o+=1
r37
435##일의 자리 넘기기
r28
436}}}{{{#!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
437##".000000"은 표기하지 않음. 소수점 표기
438.{{{#!if o+=1
439}}}}}}}}}{{{#!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
440##1
r18
441{{{#!if p=u[o]
r17
442}}}{{{#!if p==48
r21
4430}}}{{{#!if p==49
r17
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==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48))
r17
454##2
r18
455{{{#!if p=u[o]
r17
456}}}{{{#!if p==48
4570}}}{{{#!if p==49
4581}}}{{{#!if p==50
4592}}}{{{#!if p==51
4603}}}{{{#!if p==52
4614}}}{{{#!if p==53
4625}}}{{{#!if p==54
4636}}}{{{#!if p==55
4647}}}{{{#!if p==56
4658}}}{{{#!if p==57
r36
4669}}}{{{#!if o+=1
r19
467}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48))
r17
468##3
r18
469{{{#!if p=u[o]
r17
470}}}{{{#!if p==48
4710}}}{{{#!if p==49
4721}}}{{{#!if p==50
4732}}}{{{#!if p==51
4743}}}{{{#!if p==52
4754}}}{{{#!if p==53
4765}}}{{{#!if p==54
4776}}}{{{#!if p==55
4787}}}{{{#!if p==56
4798}}}{{{#!if p==57
r36
4809}}}{{{#!if o+=1
r19
481}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48))
r17
482##4
r18
483{{{#!if p=u[o]
r17
484}}}{{{#!if p==48
4850}}}{{{#!if p==49
4861}}}{{{#!if p==50
4872}}}{{{#!if p==51
4883}}}{{{#!if p==52
4894}}}{{{#!if p==53
4905}}}{{{#!if p==54
4916}}}{{{#!if p==55
4927}}}{{{#!if p==56
4938}}}{{{#!if p==57
r36
4949}}}{{{#!if o+=1
r19
495}}}}}}{{{#!if (o<l)&&(d==true)&&(u[o+1]!=48)
r17
496##5
r18
497{{{#!if p=u[o]
r17
498}}}{{{#!if p==48
4990}}}{{{#!if p==49
5001}}}{{{#!if p==50
5012}}}{{{#!if p==51
5023}}}{{{#!if p==52
5034}}}{{{#!if p==53
5045}}}{{{#!if p==54
5056}}}{{{#!if p==55
5067}}}{{{#!if p==56
5078}}}{{{#!if p==57
r36
5089}}}{{{#!if o+=1
r19
509}}}}}}{{{#!if (o<l)&&(d==true)
r17
510##6
r18
511{{{#!if p=u[o]
r17
512}}}{{{#!if p==48
r22
513##"0" 미표기
514}}}{{{#!if p==49
r17
5151}}}{{{#!if p==50
5162}}}{{{#!if p==51
5173}}}{{{#!if p==52
5184}}}{{{#!if p==53
5195}}}{{{#!if p==54
5206}}}{{{#!if p==55
5217}}}{{{#!if p==56
5228}}}{{{#!if p==57
r36
5239}}}{{{#!if o+=1
r30
524}}}}}}}}}}}}