| r289 vs r290 | ||
|---|---|---|
| ... | ... | |
| 1486 | 1486 | {{{#!if au=+au, ab=+bb, bu=+bu, bb=+bb |
| 1487 | 1487 | }}} |
| 1488 | 1488 | |
| 1489 | au의 값이 bu보다 작거나, au==bu이더라도 ab<bb이면 해당하는 자릿수의 몫이 0이라는 의미 | |
| 1489 | 변수 ps(logical)를 false로 초기화한 다음 변수 ps를 가져옵니다. au의 값이 bu보다 작거나, au==bu이더라도 ab<bb이면 해당하는 자릿수의 몫이 0이라는 의미이므로 변수 ps를 true로 바꾸고 다음 자릿수로 넘깁니다. | |
| 1490 | 1490 | {{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb)) |
| 1491 | 1491 | {{{#!if ps=true |
| 1492 | 1492 | }}}}}} |
| 1493 | ||
| 1493 | ps==true가 되려면 ① au>bu이거나, ② au==bu이고 ab>=bb인 경우입니다. !ps(다음 자릿수로 계산을 넘기지 않음)임을 if 조건문으로 둔 상태에서 진행합니다. | |
| 1494 | 1494 | {{{#!if !ps |
| 1495 | 1495 | au를 bu로 나눈 몫을 tw로 정의합니다. 정수를 정수로 나누면 몫만 계산되며, 100,000,000,000,000,000 이상 999,999,999 999,999,999 이하의 한 정수를 100,000,000,000,000,000 이상의 다른 한 정수로 나눈 몫이므로 tw의 값은 최소 0 최대 9가 됩니다. |
| 1496 | 1496 | {{{#!if tw=au/bu |
| ... | ... | |
| 1600 | 1600 | {{{#!if !br |
| 1601 | 1601 | ps를 false로 초기화한 다음 앞에서 했던 처리와 동일하게 진행합니다. |
| 1602 | 1602 | {{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb)) |
| 1603 | ||
| 1603 | 일 경우 ps를 true로 바꾸며, "ps일 경우 tw를 0으로 처리하는 과정을 여기로 병합합니다. | |
| 1604 | 1604 | {{{#!if ps=true, tw=0 |
| 1605 | 1605 | }}}}}} |
| 1606 | 1606 | {{{#!if !ps |
| ... | ... | |
| 1623 | 1623 | 앞에서 계산된 tz의 값을 tw에 더한 다음 tw를 문자열로 바꿉니다. 그리고 tm에 문자열로 바꾼 tw을 더합니다. |
| 1624 | 1624 | {{{#!if tw+=tz, tw=tw.toString(), tm+=tw |
| 1625 | 1625 | }}} |
| 1626 | ||
| 1626 | au와 ab가 모두 0이 될 때 br를 true로 정의합니다. | |
| 1627 | 1627 | {{{#!if (au==0)&&(ab==0) |
| 1628 | 1628 | {{{#!if br=true |
| 1629 | 1629 | }}}}}}}}} |
| ... | ... | |
| 5154 | 5154 | {{{#!if tm+=pd+pd, tm=tm.substr(0,i+1) |
| 5155 | 5155 | }}}}}}}}} |
| 5156 | 5156 | |
| 5157 | ps를 false로 초기화합니다. i가 충분히 큰 값인 상황이면 ps를 true로 바꿉니다. | |
| 5158 | {{{#!if ps=false | |
| 5159 | }}} | |
| 5160 | 5157 | i가 18 이상 (18 이상 35 이하)이면 rs를 매길 수 있습니다. 몫을 적어놓은 문자열 tm의 0번 index에 들어가는 문자부터 i에서 18을 뺀 값의 index에 들어가는 문자까지를 rs로 두며, rs의 문자열 길이는 i-18+1 곧 i-17입니다. |
| 5161 | 5158 | {{{#!if i>=18 |
| 5162 | 5159 | tm에서 rs를 오려낸 문자열을 tm으로 다시 둡니다. |
| ... | ... | |
| 5210 | 5207 | }}} |
| 5211 | 5208 | }}} |
| 5212 | 5209 | |
| 5213 | ri까지 몫을 기록했음에도 불구하고 여전히 몫이 남는다면 ... 처리를 | |
| 5210 | ri까지 몫을 기록했음에도 불구하고 여전히 몫이 남는다면 ... 처리를 하고 ts를 true로 바꿉니다. | |
| 5214 | 5211 | {{{#!if tm.length>0 |
| 5215 | {{{#!if tn="..." | |
| 5212 | {{{#!if tn="...", ts=true | |
| 5216 | 5213 | }}}}}} |
| 5217 | 5214 | |
| 5218 | 5215 | 여기까지가 나눗셈의 계산과정입니다. |
| ... | ... | |
| 5242 | 5239 | 소수점 아래 마지막 문자의 번호는 (.length - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다. |
| 5243 | 5240 | substr(0,0)으로 하면 ""이 됩니다. |
| 5244 | 5241 | |
| 5245 | 곱셈연산인 경우이거나 나눗셈에 나누어떨어지는 몫이 자릿수를 초과하지 않은 경우에서, ri가 빈 문자열이 아닐 때 true를 주는 논리값으로 ps를 정의합니다. | |
| 5246 | {{{#!if ps=(((f=="*")||((f=="/")&& | |
| 5242 | 곱셈연산인 경우이거나 나눗셈에 나누어떨어지는 몫이 자릿수를 초과하지 않은(ts가 false인) 경우에서, ri가 빈 문자열이 아닐 때 true를 주는 논리값으로 ps를 정의합니다. | |
| 5243 | {{{#!if ps=(((f=="*")||((f=="/")&&!ts&&(tn=="")))&&(+ri>0)) | |
| 5247 | 5244 | }}} |
| 5248 | 5245 | 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다. |
| 5249 | 5246 | 이 때 ri와 rb가 모두 0일 경우 rb도 빈 문자열로 바꾸고 rp=0으로 둡니다. |
| ... | ... |