r195 vs r196
......
12951295
여기까지가 곱셈의 연산 과정이며 rb 정리 부분으로 넘어갑니다.
12961296
}}}
12971297
1298
##rb 정리 부분 (덧셈, 뺄셈, 곱셈 공통)
1298
##ru 정리 부분
12991299
먼저 ru를 문자열로 변환합니다. 18자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (곱한 값을 더했는데도) 0일 경우 rs를 빈 문자열로 바꿉니다. 곱셈과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다.
13001300
{{{#!if ru=ru.toString()
13011301
}}}{{{#!if rs==0
......
13041304
{{{#!if rs=rs.toString(), ru="000000000000000000"+ru, ru=ru.substr(ru.length-18, 18)
13051305
}}}}}}
13061306
1307
#rb 정리 부분
13071308
소수점 아래 마지막 문자의 번호는 (문자열 길이 - 1)입니다. 극단적으로 .10000 00000 00000 000 같은 것이 나올 수 있겠지만 18회 조사합니다.
13081309
substr(0,0)으로 하면 ""이 됩니다.
13091310
1310
rb를 문자열로 변환합니다. 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
1311
곱셈연산이면서 ri가 문자열이 아닐 경우 true를 주는 논리값으ps를 정의합니다.
1312
{{{#!if ps=((f=="*")&&(ri>0))
1313
}}}
1314
소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
13111315
이 때 ri와 rb가 모두 0일 경우 rb도 빈 문자열로 바꾸고 rp=0으로 둡니다.
13121316
{{{#!if ri==0
13131317
{{{#!if ri=""
......
13151319
{{{#!if rb="", rp=0
13161320
}}}}}}}}}
13171321
1318
곱셈 과정에서 ri가 0보다 클 경우 rb를 문자열로 변환하고 rb의 오른쪽을 0으로 채웁니다.
1319
{{{#!if (f=="*")&&(ri>0)
1320
{{{#!if rb=rb.toString(), ri=ri.toString(), rb=rb+"000000000000000000", rb=rb.substr(0, 18)
1322
곱셈 과정에서 ri가 0보다 클 경우 rb를 문자열로 변환하고 rb의 쪽을 0으로 채웁니다.
1323
{{{#!if ps
1324
{{{#!if rb=rb.toString(), ri=ri.toString(), rb="000000000000000000"+rb, rb=rb.substr(rb.length-18, 18)
13211325
}}}}}}
13221326
13231327
ri가 비었고 rb가 0이 아닌 경우 rb를 문자열로 바꿉니다.
......
13251329
{{{#!if rb=rb.toString()
13261330
}}}}}}
13271331
1328
곱셈연산이면서 ri가 빈 문자열이 아닐 경우 true를 주는 논리값으로 ps를 정의합니다.
1329
ps가 true이면 ri를 rb의 문자열 길이로 정의하고, 그렇지 않은 경우 rp를 rb의 문자열 길이로 다시 정의합니다.
1330
{{{#!if ps=(f=="*")&&(ri!=""), ps
1331
{{{#!if this.rp=ri.length
1332
}}}}}}{{{#!if !ps
1332
ps가 true이면 rp를 ri의 문자열 길이로 정의하고 19~35번째 소수점 자릿수를 표시하므로 rp에 18을 더합니다. 그렇지 않은 경우 rp를 rb의 문자열 길이로 다시 정의합니다.
1333
{{{#!if ps
1334
{{{#!if this.rp=ri.length+18
1335
}}}}}}{{{#!if !ps&&(rb!="")
13331336
{{{#!if this.rp=rb.length
13341337
}}}}}}
13351338
......
13491352
}}}}}}
13501353
{{{#!if rp>1, ri.substr(rp-1,1)=="0"
13511354
{{{#!if this.ri=ri.substr(0,rp-1), rp=rp-1
1352
}}}}}}
1353
19~35번째 소수점 자릿수를 표시하므로 rp에 18을 더합니다.
1354
{{{#!if rp=rp+18
1355
}}}}}}
1355
}}}}}}}}}
13561356
13571357
{{{#!if !ps
13581358
{{{#!if rp>9, rb.substr(rp-9,9)=="000000000"
......