r178 vs r179
......
13691369
##rb 정리 부분 (덧셈, 뺄셈, 곱셈 공통)
13701370
먼저 ru를 문자열로 변환합니다. 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (곱한 값을 더했는데도) 0일 경우 rs를 빈 문자열로 바꿉니다. 곱셈과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다.
13711371
{{{#!if ru=ru.toString()
1372
}}}{{{#!if f=="*"
1373
{{{#!if rs==0
1372
}}}{{{#!if rs==0
13741373
{{{#!if rs=""
1375
}}}}}}{{{#!if rs>0
1374
}}}}}}{{{#!if (f=="*")&&(rs>0)
13761375
{{{#!if rs=rs.toString(), ru="000000000000000000"+ru, ru=ru.substr(ru.length-18, 18)
1377
}}}}}}}}}
1376
}}}}}}
13781377
13791378
소수점 아래 마지막 문자의 번호는 (문자열 길이 - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다.
13801379
substr(0,0)으로 하면 ""이 됩니다.
13811380
13821381
rb를 문자열로 변환합니다. 곱셈 과정에서 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다. ri가 0보다 클 경우 rb를 문자열로 변환하고 rb의 오른쪽을 0으로 채웁니다.
13831382
{{{#!if rb=rb.toString()
1384
}}}{{{#!if f=="*"
1385
{{{#!if ri==0
1383
}}}{{{#!if ri==0
13861384
{{{#!if ri=""
1387
}}}}}}{{{#!if ri>0
1385
}}}}}}{{{#!if (f=="*")&&(ri>0)
13881386
{{{#!if ri=ri.toString(), rb=rb+"000000000000000000", rb=rb.substr(0, 18)
1389
}}}}}}}}}
1387
}}}}}}
13901388
13911389
곱셈연산이면서 ri가 빈 문자열이 아닐 경우 true를 주는 논리값으로 ps를 정의합니다.
13921390
ps가 true이면 ri를 rb의 문자열 길이로 정의하고, 그렇지 않은 경우 rp를 rb의 문자열 길이로 다시 정의합니다.
......