| r312 vs r313 | ||
|---|---|---|
| ... | ... | |
| 128 | 128 | }}}}}}}}} |
| 129 | 129 | |
| 130 | 130 | ##== 2차 초기화 == |
| 131 | 유효성 검사가 종료되었으면 ts와 br를 false로 초기화합니다. | |
| 132 | {{{#!if ts=false, br=false | |
| 131 | 유효성 검사가 종료되었으면 ts와 br를 false로 초기화합니다 유효성 검사에 쓰인 tm과 tn 값을 빈 문자열 값으로 초기화합니다. | |
| 132 | {{{#!if tm="", tn="", ts=false, br=false | |
| 133 | 133 | }}} |
| 134 | 134 | |
| 135 | 135 | 입력한 소수점 아래에 입력한 값을 정리합니다. 이에 따라 ap, bp값도 다시 조정됩니다. |
| ... | ... | |
| 164 | 164 | {{{#!if bb=bb.substr(0,bp-1), bp=bp-1 |
| 165 | 165 | }}}}}} |
| 166 | 166 | |
| 167 | ||
| 168 | {{{#!if t | |
| 167 | 그 다음 --앞자리에 0만 여러 개 적어놓고 장난치는 사람이 있을까봐-- au를 값으로 바꾼 다음 다시 문자열로 변환하여 앞자리에 있는 0들을 모두 삭제합니다. bu도 그렇게 둡니다. | |
| 168 | {{{#!if au=+au, au=au.toString(), bu=+bu, bu=bu.toString() | |
| 169 | 169 | }}} |
| 170 | 170 | |
| 171 | 이 상태의 au, ab를 ma로 저장하고 bu, bb를 mb로 저장합니다. | |
| 172 | {{{#!if ad==-1 | |
| 173 | {{{#!if ma=au | |
| 174 | }}}}}}{{{#!if ad!=-1 | |
| 175 | {{{#!if ma=au+"."+ab | |
| 176 | }}}}}} | |
| 177 | {{{#!if bd==-1 | |
| 178 | {{{#!if mb=bu | |
| 179 | }}}}}}{{{#!if bd!=-1 | |
| 180 | {{{#!if mb=bu+"."+bb | |
| 181 | }}}}}} | |
| 182 | au 앞에 음수 부호가 달려 있었다면 ma 앞에 음수 기호를 붙입니다. | |
| 183 | {{{#!if as[0]==45 | |
| 184 | {{{#!if ma="-"+ma | |
| 185 | }}}}}} | |
| 186 | bu 앞에 음수 부호가 달려 있었다면 mb 앞에 음수 기호를 붙입니다. | |
| 187 | {{{#!if bs[0]==45 | |
| 188 | {{{#!if mb="-"+mb | |
| 189 | }}}}}} | |
| 190 | ||
| 171 | 191 | ##== 덧셈, 뺄셈 == |
| 172 | 192 | 덧셈과 뺄셈 계산과정을 적어봅니다. |
| 173 | 193 | {{{#!if (f=="+")||(f=="-") |
| ... | ... | |
| 368 | 388 | 18자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다. |
| 369 | 389 | 다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다. |
| 370 | 390 | |
| 371 | 음수가 될 경우 | |
| 391 | a 또는 b가 음수가 될 경우 as 또는 bs 문자열은 "-" 기호가 붙으므로, 이것을 이용한 조건문을 하나 만들어 a와 b 둘의 부호가 서로 다를 경우 (a만 음수이거나 b가 음수일 경우) 계산 결과에 부호를 표시할 수 있게 만듭니다. | |
| 372 | 392 | {{{#!if (as[0]==45)^(bs[0]==45) |
| 373 | 393 | {{{#!if ns="-" |
| 374 | 394 | }}}}}} |
| ... | ... | |
| 380 | 400 | {{{#!if bu=bu.substr(1,bd-1) |
| 381 | 401 | }}}}}} |
| 382 | 402 | |
| 383 | 그 다음 --앞자리에 0만 여러 개 적어놓고 장난치는 사람이 있을까봐-- au를 값으로 바꾼 다음 다시 문자열로 변환하여 앞자리에 있는 0들을 모두 삭제합니다. bu도 그렇게 둡니다. | |
| 384 | {{{#!if au=+au, au=au.toString(), bu=+bu, bu=bu.toString() | |
| 385 | }}} | |
| 386 | ||
| 387 | 이 상태의 au, ab를 ma로 저장하고 bu, bb를 mb로 저장합니다. | |
| 388 | {{{#!if ad==-1 | |
| 389 | {{{#!if ma=au | |
| 390 | }}}}}}{{{#!if ad!=-1 | |
| 391 | {{{#!if ma=au+"."+ab | |
| 392 | }}}}}} | |
| 393 | {{{#!if bd==-1 | |
| 394 | {{{#!if mb=bu | |
| 395 | }}}}}}{{{#!if bd!=-1 | |
| 396 | {{{#!if mb=bu+"."+bb | |
| 397 | }}}}}} | |
| 398 | au 앞에 음수 부호가 달려 있었다면 ma 앞에 음수 기호를 붙입니다. | |
| 399 | {{{#!if as[0]==45 | |
| 400 | {{{#!if ma="-"+ma | |
| 401 | }}}}}} | |
| 402 | bu 앞에 음수 부호가 달려 있었다면 mb 앞에 음수 기호를 붙입니다. | |
| 403 | {{{#!if bs[0]==45 | |
| 404 | {{{#!if mb="-"+mb | |
| 405 | }}}}}} | |
| 406 | ||
| 407 | ||
| 408 | 403 | ##=== 자릿수 측정 === |
| 409 | 404 | 나누는 자릿수에 맞춰 결과를 표시하고자 ac, bc를 자릿수를 나타내는 값으로 정의합니다. |
| 410 | 405 | 먼저 au는 앞에 적어놓은 0을 제거한 문자열이므로 +au>0인 경우 ac를 au의 문자열 길이에서 1을 뺀 값으로 정의합니다. |
| ... | ... |