r289 vs r290
......
14861486
{{{#!if au=+au, ab=+bb, bu=+bu, bb=+bb
14871487
}}}
14881488
1489
au의 값이 bu보다 작거나, au==bu이더라도 ab<bb이면 해당하는 자릿수의 몫이 0이라는 의미므로 다음 자릿수로 넘깁니다. 이 과정에서 변수 ps(logical)false로 초기화한 다음 가져옵니다.
1489
변수 ps(logical)를 false로 초기화한 다음 변수 ps를 가져옵니다. au의 값이 bu보다 작거나, au==bu이더라도 ab<bb이면 해당하는 자릿수의 몫이 0이라는 의미므로 변수 ps를 true로 바꾸고 다음 자릿수로 넘깁니다.
14901490
{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
14911491
{{{#!if ps=true
14921492
}}}}}}
1493
!ts이러면 ① au>bu이거나, ② au==bu이고 ab>=bb인 경우입니다. !ts이고 !ps(다음 자릿수로 계산을 넘기지 않음)임을 if 조건문으로 둔 상태에서 진행합니다.
1493
ps==true가 되려면 ① au>bu이거나, ② au==bu이고 ab>=bb인 경우입니다. !ps(다음 자릿수로 계산을 넘기지 않음)임을 if 조건문으로 둔 상태에서 진행합니다.
14941494
{{{#!if !ps
14951495
au를 bu로 나눈 몫을 tw로 정의합니다. 정수를 정수로 나누면 몫만 계산되며, 100,000,000,000,000,000 이상 999,999,999 999,999,999 이하의 한 정수를 100,000,000,000,000,000 이상의 다른 한 정수로 나눈 몫이므로 tw의 값은 최소 0 최대 9가 됩니다.
14961496
{{{#!if tw=au/bu
......
16001600
{{{#!if !br
16011601
ps를 false로 초기화한 다음 앞에서 했던 처리와 동일하게 진행합니다.
16021602
{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
1603
ts일 경우 ps를 true로 바꾸며, "ps일 경우 tw를 0으로 처리하는 과정을 여기로 병합합니다.
1603
일 경우 ps를 true로 바꾸며, "ps일 경우 tw를 0으로 처리하는 과정을 여기로 병합합니다.
16041604
{{{#!if ps=true, tw=0
16051605
}}}}}}
16061606
{{{#!if !ps
......
16231623
앞에서 계산된 tz의 값을 tw에 더한 다음 tw를 문자열로 바꿉니다. 그리고 tm에 문자열로 바꾼 tw을 더합니다.
16241624
{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
16251625
}}}
1626
ts를 au와 ab가 모두 0이 되는 조건으로 다시 정의합니다.
1626
au와 ab가 모두 0이 br를 true로 정의합니다.
16271627
{{{#!if (au==0)&&(ab==0)
16281628
{{{#!if br=true
16291629
}}}}}}}}}
......
51545154
{{{#!if tm+=pd+pd, tm=tm.substr(0,i+1)
51555155
}}}}}}}}}
51565156
5157
ps를 false로 초기화합니다. i가 충분히 큰 값인 상황이면 ps를 true로 바꿉니다.
5158
{{{#!if ps=false
5159
}}}
51605157
i가 18 이상 (18 이상 35 이하)이면 rs를 매길 수 있습니다. 몫을 적어놓은 문자열 tm의 0번 index에 들어가는 문자부터 i에서 18을 뺀 값의 index에 들어가는 문자까지를 rs로 두며, rs의 문자열 길이는 i-18+1 곧 i-17입니다.
51615158
{{{#!if i>=18
51625159
tm에서 rs를 오려낸 문자열을 tm으로 다시 둡니다.
......
52105207
}}}
52115208
}}}
52125209
5213
ri까지 몫을 기록했음에도 불구하고 여전히 몫이 남는다면 ... 처리를 니다.
5210
ri까지 몫을 기록했음에도 불구하고 여전히 몫이 남는다면 ... 처리를 하고 ts를 true로 바꿉니다.
52145211
{{{#!if tm.length>0
5215
{{{#!if tn="..."
5212
{{{#!if tn="...", ts=true
52165213
}}}}}}
52175214
52185215
여기까지가 나눗셈의 계산과정입니다.
......
52425239
소수점 아래 마지막 문자의 번호는 (.length - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다.
52435240
substr(0,0)으로 하면 ""이 됩니다.
52445241
5245
곱셈연산인 경우이거나 나눗셈에 나누어떨어지는 몫이 자릿수를 초과하지 않은 경우에서, ri가 빈 문자열이 아닐 때 true를 주는 논리값으로 ps를 정의합니다.
5246
{{{#!if ps=(((f=="*")||((f=="/")&&br&&(tn=="")))&&(+ri>0))
5242
곱셈연산인 경우이거나 나눗셈에 나누어떨어지는 몫이 자릿수를 초과하지 않은(ts가 false인) 경우에서, ri가 빈 문자열이 아닐 때 true를 주는 논리값으로 ps를 정의합니다.
5243
{{{#!if ps=(((f=="*")||((f=="/")&&!ts&&(tn=="")))&&(+ri>0))
52475244
}}}
52485245
소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
52495246
이 때 ri와 rb가 모두 0일 경우 rb도 빈 문자열로 바꾸고 rp=0으로 둡니다.
......