r269 vs r270
......
14501450
여기까지가 곱셈에서 a*b 의 연산 과정이며 rb 정리 부분으로 넘어갑니다.
14511451
}}}
14521452
1453
##=== 나눗셈 ===
14531454
a와 b 모두 0이 아닌 경우에서 나눗셈을 연산하는 과정입니다.
14541455
{{{#!if (f=="/")&&((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
14551456
......
51345135
{{{#!if i=ac-bc, i>=18
51355136
tm에서 rs를 오려낸 문자열을 tm으로 다시 둡니다.
51365137
{{{#!if rs=tm.substr(0,i-17), tm=tm.substr(i-17)
5137
}}}
5138
rs에 순 0만을 매겼을 가능성이 있으므로 rs를 정수로 바꿉니다.
5139
{{{#!if rs=+rs
51405138
}}}}}}
51415139
##ru 매기기
51425140
i>=18 이 되(어 rs를 매기)는 경우 i를 17로 맞춥니다.
......
51455143
}}}}}}
51465144
i가 0 이상 (0 이상 17 이하)이면 ru를 매길 수 있으며 문자열의 길이는 i+1이 됩니다.
51475145
{{{#!if i>=0
5148
{{{#!if ru=tm.substr(0,i+1), tm=tm.substr(i+1), ru=+ru
5146
{{{#!if ru=tm.substr(0,i+1), tm=tm.substr(i+1)
51495147
}}}}}}
51505148
51515149
##rb 매기기
......
51555153
}}}}}}
51565154
i가 -18 이상 (-18 이상 -1 이하)이면 rb를 매길 수 있으며 문자열의 길이는 i+18+1 곧 i+19가 됩니다.
51575155
{{{#!if i>=-18
5158
{{{#!if rb=tm.substr(0,i+19), tm=tm.substr(i+19), rb=rb+pd, rb=rb.substr(0,18), rb=+rb
5156
{{{#!if rb=tm.substr(0,i+19), tm=tm.substr(i+19), rb=rb+pd, rb=rb.substr(0,18)
51595157
}}}}}}
51605158
51615159
##ri 매기기
......
51665164
i가 -19 이하 (-36이상 -19 이하이나, i의 최소값은 -35)이면 ri를 매길 수 있습니다.
51675165
{{{#!if i>=-36
51685166
{{{#if false
5169
{{{#!if ri=tm.substr(0,i+37), tm=tm.substr(i+37), ri=ri+pd, ri=ri.substr(0,18), ri=+ri
5167
{{{#!if ri=tm.substr(0,i+37), tm=tm.substr(i+37), ri=ri+pd, ri=ri.substr(0,18)
51705168
}}}}}}
5171
{{{#!if ri=tm.substr(0,18), tm=tm.substr(18), ri=ri+pd, ri=ri.substr(0,18), ri=+ri
5169
{{{#!if ri=tm.substr(0,18), tm=tm.substr(18), ri=ri+pd, ri=ri.substr(0,18)
51725170
}}}}}}
5173
5174
5175
51765171
여기까지가 나눗셈의 계산과정입니다.
51775172
}}}
51785173
5174
##== 계산 결과 표시 정리하기 ==
51795175
연산이 끝났으면 표기된 숫자를 정리합니다.
51805176
51815177
##ru 정리 부분
5182
먼저 ru를 문자열로 변환합니다. 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (곱한 값을 더했는데도) 0일 경우 rs를 빈 문자열로 바꿉니다. 곱셈과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다.
5178
먼저 (곱셈연산에서 정수값으로 나오는) ru를 문자열로 변환합니다. 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (가령 셈에서, 곱한 값을 더한 결과가) 0일 경우 rs를 빈 문자열로 바꿉니다. 계산과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다.
51835179
{{{#!if ru=ru.toString()
5184
}}}{{{#!if rs==0
5185
{{{#!if rs=""
5186
}}}}}}{{{#!if (f=="*")&&(rs>0)
5180
}}}{{{#!if +rs==0
5181
{{{#!if rs=""
5182
}}}}}}{{{#!if +rs>0
51875183
{{{#!if rs=rs.toString(), ru=pd+ru, ru=ru.substr(ru.length-18, 18)
51885184
}}}}}}
51895185
......