r253 vs r254
......
14361436
a/b=(au+ab)/(bu+bb)=(+(au.substr(0,18)+ab.substr(0,18)))/(+(bu.substr(0,18)+bb.substr(0,18)))와 같습니다.
14371437
## 자릿수 측정
14381438
나누는 자릿수에 맞춰 결과를 표시하고자 ac, bc를 자릿수를 나타내는 값으로 정의합니다.
1439
먼저 au는 앞 0을 제거한 문자열이므로 +au>0인 경우 ac를 au의 문자열 자릿수로 정의합니다.
1439
먼저 au는 앞 적어놓은 0을 제거한 문자열이므로 +au>0인 경우 ac를 au의 문자열 길이에서 1을 뺀 값으로 정의합니다.
14401440
{{{#!if +au>0
1441
{{{#!if ac=au.length
1441
{{{#!if ac=au.length-1
14421442
}}}}}}
14431443
(au, ab 둘다 0인 경우 앞에 처리하는 식이 있으며) au가 0이라면 ab는 0보다 크며, 소수점 아래 처음으로 0이 아닌 수가 나오는 자릿수를 고른 다음 덧셈 연산에서 그 수의 역원이 되는 수를 ac로 정의합니다. 이를 구하고자 뒤에 0을 더 붙여 18자리 숫자로 만든 다음 정수로 바꾸어 구합니다.
14441444
{{{#!if +au==0
......
14471447
14481448
bc도 a와 같은 방법으로 정의합니다.
14491449
{{{#!if +bu>0
1450
{{{#!if bc=bu.length
1450
{{{#!if bc=bu.length-1
14511451
}}}}}}{{{#!if +bu==0
1452
}}}
1452
{{{#!if bc=bb+pd, bc=bc.substr(0,18), bc=+bc, bc=bc.toString(), bc=bc.length-19
1453
}}}}}}
14531454
14541455
14551456
##자릿수 기억 (이후에 서술)
......
50505051
{{{#!if (au==0)&&(ab==0)
50515052
{{{#!if br=true
50525053
}}}}}}}}}
5053
{{{#!if !br
5054
{{{#!if au=au.toString(), ab=ab.toString()
5055
}}}{{{#!if tn="", ps=(au.length==18), ps
5056
{{{#!if tn=au.substr(0,1), au=substr(1,17)
5057
}}}}}}{{{#!if !ps&&(au.length<17)
5058
{{{#!if au=pd+au, au=au.substr(au.length-17,17)
5059
}}}}}}{{{#!if ab.length<18
5060
{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
5061
}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
5054
tn 문자열로, ts를 false 초기화합니다. 마지막 72회까지 몫을 구하는 계산을 했음에도 불구하고 0으로 나누어떨어지지 않는다면 tn을 "..."로, tstrue 바꿉니다.
5055
{{{#!if tn="", ts=false, !br
5056
{{{#!if tn="...", ts=true
50625057
}}}}}}}}}
50635058
50645059
##rs 매기기
......