| r117 vs r118 | ||
|---|---|---|
| ... | ... | |
| 15 | 15 | 0.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도 |
| 16 | 16 | '''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string); |
| 17 | 17 | '''rp''' : "result" # of places of decimal (integer); |
| 18 | '''ps''' : pass (logical); | |
| 19 | {{{#!if this.as=a.toString(), this.bs=b.toString(), this.ru=0+0, this.rb=0+0, this.rp=0+0 | |
| 18 | '''i''' : index; '''tv''' temporary value; '''ps''' : pass (logical); | |
| 19 | {{{#!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 | |
| 20 | 20 | }}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".") |
| 21 | 21 | }}}{{{#!if ad!=-1 |
| 22 | 22 | 소수점이 발견되는 자리 번호가 ad이므로 ad+1번에 해당되는 자리부터 끝까지 표기. |
| ... | ... | |
| 193 | 193 | 중복 처리를 막기 위해 변수 하나를 정의합니다. |
| 194 | 194 | {{{#!if this.ps=false |
| 195 | 195 | }}} |
| 196 | ||
| 197 | 소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다. | |
| 198 | {{{#!if i<ap | |
| 199 | {{{#!if tv=10*tv, i+=1 | |
| 200 | }}}}}} | |
| 201 | {{{#!if i<ap | |
| 202 | {{{#!if tv=10*tv, i+=1 | |
| 203 | }}}}}} | |
| 204 | {{{#!if i<ap | |
| 205 | {{{#!if tv=10*tv, i+=1 | |
| 206 | }}}}}} | |
| 207 | {{{#!if i<ap | |
| 208 | {{{#!if tv=10*tv, i+=1 | |
| 209 | }}}}}} | |
| 210 | {{{#!if i<ap | |
| 211 | {{{#!if tv=10*tv, i+=1 | |
| 212 | }}}}}} | |
| 213 | ||
| 214 | {{{#!if i<ap | |
| 215 | {{{#!if tv=10*tv, i+=1 | |
| 216 | }}}}}} | |
| 217 | {{{#!if i<ap | |
| 218 | {{{#!if tv=10*tv, i+=1 | |
| 219 | }}}}}} | |
| 220 | {{{#!if i<ap | |
| 221 | {{{#!if tv=10*tv, i+=1 | |
| 222 | }}}}}} | |
| 223 | {{{#!if i<ap | |
| 224 | {{{#!if tv=10*tv, i+=1 | |
| 225 | }}}}}} | |
| 226 | {{{#!if i<ap | |
| 227 | {{{#!if tv=10*tv, i+=1 | |
| 228 | }}}}}} | |
| 229 | ||
| 230 | {{{#!if i<ap | |
| 231 | {{{#!if tv=10*tv, i+=1 | |
| 232 | }}}}}} | |
| 233 | {{{#!if i<ap | |
| 234 | {{{#!if tv=10*tv, i+=1 | |
| 235 | }}}}}} | |
| 236 | {{{#!if i<ap | |
| 237 | {{{#!if tv=10*tv, i+=1 | |
| 238 | }}}}}} | |
| 239 | {{{#!if i<ap | |
| 240 | {{{#!if tv=10*tv, i+=1 | |
| 241 | }}}}}} | |
| 242 | {{{#!if i<ap | |
| 243 | {{{#!if tv=10*tv, i+=1 | |
| 244 | }}}}}} | |
| 245 | ||
| 246 | {{{#!if i<ap | |
| 247 | {{{#!if tv=10*tv, i+=1 | |
| 248 | }}}}}} | |
| 249 | {{{#!if i<ap | |
| 250 | {{{#!if tv=10*tv, i+=1 | |
| 251 | }}}}}} | |
| 252 | {{{#!if i<ap | |
| 253 | {{{#!if tv=10*tv, i+=1 | |
| 254 | }}}}}} | |
| 255 | ||
| 196 | 256 | Case 1 : ru가 0보다 큰 경우 |
| 197 | 257 | ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다. |
| 198 | 258 | {{{#!if ru>0 |
| ... | ... | |
| 213 | 273 | {{{#!if (+rb<0)&&(ps==false) |
| 214 | 274 | {{{#!if ru=ru-1 |
| 215 | 275 | }}} |
| 216 | ||
| 217 | {{{#!if rb= | |
| 276 | 소수점 아래 자릿수인 ap만큼 10을 제곱한 값(tv)을 rb에서 증가시켜 rb를 재정의합니다. 그러면 rb는 양수가 됩니다. 그리고 rb를 다시 문자열로 변환합니다. | |
| 277 | {{{#!if rb=tv+(+rb) | |
| 218 | 278 | }}}{{{#!if rb=rb.toString() |
| 219 | 279 | }}} |
| 220 | 280 | {{{#!if ps=true |
| ... | ... | |
| 272 | 332 | ru<=-1이므로 ru+1를 해도 최대 0이 됩니다. |
| 273 | 333 | {{{#!if ru=ru+1 |
| 274 | 334 | }}} |
| 275 | rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다. | |
| 276 | {{{#!if rb= | |
| 335 | rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값(tv)에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다. | |
| 336 | {{{#!if rb=tv-(+rb) | |
| 277 | 337 | }}}{{{#!if rb=rb.toString() |
| 278 | 338 | }}}{{{#!if ps=true |
| 279 | 339 | }}}}}} |
| ... | ... | |
| 444 | 504 | |
| 445 | 505 | 아래 출력 변수 설명 |
| 446 | 506 | '''sa''' : searching a; '''sb''' : searching b; '''sf''' : searching f; |
| 447 | '''rl''' : result string length to output; ''' | |
| 507 | '''rl''' : result string length to output; '''p''' : a point of string(s); | |
| 448 | 508 | ru는 계산결과에서 소수점 위 자리이므로, dot(.)이 나오지 않습니다. |
| 449 | 509 | ##여기까지 주석(주석 아님) |
| 450 | 510 | }}}}}}{{{#!wiki style="font-weight: 300; font-size: 20px;" |
| ... | ... |