| r73 vs r74 | ||
|---|---|---|
| ... | ... | |
| 10 | 10 | '''ab''' : "a" below value (string→integer); '''bb''' : "b" below value (string→integer); |
| 11 | 11 | '''ap''' : "a" # of places of decimal (integer); '''bp''' : "b" # of places of decimal (integer); |
| 12 | 12 | 0.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도 |
| 13 | '''ru''' : result upper value (integer); '''rb''' : result below value (integer) | |
| 13 | '''ru''' : "result" upper value (integer); '''rb''' : "result" below value (integer); '''rp''' : "result" # of places of decimal (integer) | |
| 14 | 14 | {{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0 |
| 15 | 15 | }}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".") |
| 16 | 16 | }}}{{{#!if ad!=-1 |
| ... | ... | |
| 96 | 96 | }}}}}}{{{#!if ap>bp |
| 97 | 97 | {{{#!if bp+=1, bb=bb+"0" |
| 98 | 98 | }}}}}} |
| 99 | 최대 18회. | |
| 99 | 소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18회. | |
| 100 | 100 | |
| 101 | 101 | 반대로 b의 소수점 자릿수가 많은 경우도 있습니다. |
| 102 | 102 | {{{#!if bp>ap |
| ... | ... | |
| 157 | 157 | 뺄셈은 덧셈의 역연산이고 구조가 단순하므로 덧셈과 뺄셈을 먼저 같이 처리합니다. ru, rb는 각각 정수 값으로 나올 것입니다. |
| 158 | 158 | {{{#!if ru=(+au)-(+bu), rb=(+ab)-(+bb) |
| 159 | 159 | }}}}}} |
| 160 | 소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다. | |
| 161 | {{{#!if this.rb=rb.toString() | |
| 162 | }}} | |
| 163 | 문자열 길이를 rp로 정의합니다. | |
| 164 | {{{#!if this.rp=rb.length | |
| 165 | }}} | |
| 166 | rb가 음수이면 마이너스 부분을 잘라내어 저장시키고 rp를 다시 정의합니다. | |
| 167 | {{{#!if rb[0]==45 | |
| 168 | {{{#!if rb=rb.substr(1, rp-1) | |
| 169 | }}}{{{#!if rp=rb.length | |
| 170 | }}}}}} | |
| 160 | 171 | |
| 172 | ||
| 161 | 173 | {{{#!if ru>0 |
| 162 | 174 | ru는 정수이므로 0보다 크면 곧 1 이상이며, 1 이상이면 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. |
| 163 | }}} | |
| 175 | {{{#!if rb>0 | |
| 176 | }}}}}} | |
| 164 | 177 | {{{#!if ru==0 |
| 165 | 178 | }}} |
| 166 | 179 | {{{#!if ru<0 |
| ... | ... |