r252 vs r253
......
7777
{{{#!if br=true, ea=1
7878
}}}}}}
7979
80
tm 앞에 의도적으로 00을 적어놓았을 수 있으므로 앞에 숫자 1을 더 붙인 다음, 이를 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다면 숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나오게 됩니다.
80
의도적으로 00을 적어놓았을 수 있으므로 tm 앞에 숫자 1을 더 붙인 다음, 이를 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다면 숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나오게 됩니다.
8181
숫자가 아닌 문구를 섞어넣었음이 탐지될 경우 오류코드 6번(소수점 윗자리 오류)을 반환합니다. (반점(,)도 걸릴 수 있습니다.)
8282
{{{#!if ts&&!br
8383
{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
......
14341434
14351435
au, ab, bu, bb를 18자로 만들었으므로 36자리 정수의 나눗셈으로 봅니다.
14361436
a/b=(au+ab)/(bu+bb)=(+(au.substr(0,18)+ab.substr(0,18)))/(+(bu.substr(0,18)+bb.substr(0,18)))와 같습니다.
1437
rp=36이 되면 마지막 연산만 하고 중단할있도록 진행합니다.
1438
## 범위 조절
1439
bu=0인 경우 rb에 18을 감소시킵니다.
1440
{{{#!if bu==0
1441
{{{#!if rb=rb-18
1437
## 자릿수 측정
1438
나누는릿수에 맞춰 결과를 표시하고 ac, bc를 자릿 나타내는 값으로 정의합니다.
1439
먼저 au는 앞의 0을 제거한 문자열이므로 +au>0인 경우 ac를 au의 문자열 자릿수로 정의합니다.
1440
{{{#!if +au>0
1441
{{{#!if ac=au.length
14421442
}}}}}}
1443
1444
au=0인 경우 a/b=a*(10**18)/(b)*(10**18)을 rb에 18 증가시킵니다.
1445
{{{#!if bu==0
1446
{{{#!if rb=rb+18
1443
(au, ab 둘다 0인 경우 앞에 처리하는 식이 있으며) au가 0이라면 ab0보다 크며, 소수점 아래 처음으로 0 아닌 수가 나오는 자릿수를 고른 다음 덧셈 연산에서 그 수의 역원이 되는 수를 ac로 정의합니다. 이를 구고자 0을 더 붙여 18자리 숫자로 만든 다음 정수로 바꾸어 구합니다.
1444
{{{#!if +au==0
1445
{{{#!if ac=ab+pd, ac=ac.substr(0,18), ac=+ac, ac=ac.toString(), ac=ac.length-19
14471446
}}}}}}
14481447
1449
##b 자릿수 측정
1448
bc도 a와 같은 방법으로 정의합니다.
1449
{{{#!if +bu>0
1450
{{{#!if bc=bu.length
1451
}}}}}}{{{#!if +bu==0
1452
}}}
14501453
1454
14511455
##자릿수 기억 (이후에 서술)
14521456
##몫 서술
14531457
제일 높은 자리부터 내려오면서 처음으로 0이 아닌 수를 왼쪽으로 당기는 과정을 거쳤으므로 (1부터 시작하는 18자리+18자리 숫자)/(1부터 시작하는 18자리+18자리 수) 연산이 됩니다.
......