r311 vs r312
......
384384
{{{#!if au=+au, au=au.toString(), bu=+bu, bu=bu.toString()
385385
}}}
386386
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
387408
##=== 자릿수 측정 ===
388409
나누는 자릿수에 맞춰 결과를 표시하고자 ac, bc를 자릿수를 나타내는 값으로 정의합니다.
389410
먼저 au는 앞에 적어놓은 0을 제거한 문자열이므로 +au>0인 경우 ac를 au의 문자열 길이에서 1을 뺀 값으로 정의합니다.
390411
{{{#!if +au>0
391412
{{{#!if ac=au.length-1
392413
}}}}}}
393
(au, ab 둘다 0인 경우 앞에 처리하는 식이 있으며) au가 0이라면 ab는 0보다 크며, 소수점 아래 처음으로 0이 아닌 수가 나오는 자릿수를 고른 다음 덧셈 연산에서 그 수의 역원이 되는 수를 ac로 정의합니다. 이를 구하고자 뒤에 0을 더 붙여 18자리 숫자로 만든 다음 정수로 바꾸어 구합니다.
414
(au, ab 둘다 0인 경우 앞에 처리하는 식이 있고, au, ab 둘 중 하나라도 0이 아닐 때) au가 0이라면 ab는 단순 정수값으로 옮겼을 때 0보다 값이 나옵니다. 소수점 아래 처음으로 0이 아닌 수가 나오는 자릿수를 구한 다음 덧셈 연산에서 그 수의 역원이 되는 수를 ac로 정의합니다. 이를 구하고자 ab의 뒤에 0을 더 붙여 18자리 숫자로 만든 다음 정수로 바꾸어 구합니다.
394415
{{{#!if +au==0
395416
{{{#!if ac=ab+pd, ac=ac.substr(0,18), ac=+ac, ac=ac.toString(), ac=ac.length-19
396417
}}}}}}
......
14831504
##i=0
14841505
{{{#!if br=false
14851506
}}}다시 정렬된 bu, bb의 값은 바뀌지 않습니다. bu, bb로 나눈 몫만큼 au, ab에서 감소시킨 다음 au와 ab를 다시 정렬시키며, au와 ab가 모두 0이 되면 더 이상 계산하지 않도록 br를 true로 반환합니다.
1486
au와 ab의 값을 가져와 tu와 tv로 먼저 복제합니다. (계산 결과에 쓰게 됩니다.)
1487
{{{#!if tu=au, tv=ab
1488
}}}
14891507
그 다음 계산을 편하게 할 수 있도록 텍스트값으로 된 au, ab, bu, bb를 정수값으로 변환합니다.
14901508
{{{#!if au=+au, ab=+ab, bu=+bu, bb=+bb
14911509
}}}
......
52265244
}}}
52275245
52285246
##== 계산 결과 표시 정리하기 ==
5247
##=== 결과값 표시 정리하기 ===
52295248
연산이 끝났으면 표기된 숫자를 정리합니다.
52305249
52315250
##rs, ru 정리 부분
......