| r154 vs r155 | ||
|---|---|---|
| ... | ... | |
| 498 | 498 | {{{#if rs=(+rs)+(+ru.substr(0,1)), ru=(+ru.substr(1,18)) |
| 499 | 499 | }}}}}} |
| 500 | 500 | |
| 501 | 소수점 아래 1~18번째에서 au를 곱한 값을 처리합니다. | |
| 502 | {{{#!if tw=au.substr(0,18), tw=(+tw)*(+bb.substr(17,1)), tw=tw.toString() | |
| 503 | }}} | |
| 504 | 18자리에서 넘쳐 19자리가 되면 넘친 앞의 1자리를 ru로 넘기고 나머지 18자리를 rb에 더합니다. | |
| 505 | {{{#!if tw.length==19 | |
| 506 | {{{#if ru=(+ru)+(+tw.substr(0,1)), rb=(+rb)+(+tw.substr(1,18)) | |
| 507 | }}}}}}{{{#!if tw.length<=18 | |
| 508 | {{{#!if rb=(+rb)+(+tw) | |
| 509 | }}}}}}{{{#!if rb=rb.toString(), rb.length==19 | |
| 510 | {{{#if ru=(+ru)+(+rb.substr(0,1)), rb=(+rb.substr(1,18)) | |
| 511 | }}}}}} | |
| 512 | 501 | |
| 513 | b의 소수점 아래 17번째와 곱합니다. 소수점 위 1번째, 소수점 아래 1~18번째, 소수점 아래 19~35번째에서 처리합니다. 문자열이 1칸 밀립니다. 19~35번째 자리는 17자리이므로 17자리 숫자가 곱셈으로 18자리로 넘치게 되면 앞의 자리를 rb로 넘깁니다. | |
| 514 | {{{#!if tv=tv*10 | |
| 515 | }}}{{{#!if tw=ab.substr(1,17), tw=(+tw)*(+bb.substr(16,1)), tw=tw.toString() | |
| 516 | }}}{{{#!if tw.length==18 | |
| 517 | {{{#if rb=(+rb)+(+tw.substr(0,1)), ri=(+ri)+((+tw.substr(1,18))*tv) | |
| 518 | }}}}}}{{{#!if tw.length<=17 | |
| 519 | {{{#!if ri=(+ri)+((+tw)*tv) | |
| 520 | }}}}}}{{{#!if ri=ri.toString(), ri.length==19 | |
| 521 | {{{#if rb=(+rb)+(+ri.substr(0,1)), ri=(+ri.substr(1,18)) | |
| 522 | }}}}}}{{{#!if tw=au.substr(1,17)+ab.substr(0,1), tw=(+tw)*(+bb.substr(16,1)), tw=tw.toString() | |
| 523 | }}}{{{#!if tw.length==19 | |
| 524 | {{{#if ru=(+ru)+(+tw.substr(0,1)), rb=(+rb)+(+tw.substr(1,18)) | |
| 525 | }}}}}}{{{#!if tw.length<=18 | |
| 526 | {{{#!if rb=(+rb) | |
| 527 | }}}}}}{{{#!if rb=rb.toString(), rb.length==19 | |
| 528 | {{{#if ru=(+ru)+(+rb.substr(0,1)), rb=(+rb.substr(1,18)) | |
| 529 | }}}}}}{{{#!if tw=au.substr(0,1), tw=(+tw)*(+bb.substr(16,1)) | |
| 530 | }}}{{{#!if ru=(+ru)+(+tw) | |
| 531 | }}} | |
| 532 | b의 소수점 아래 3번째 자리의 값과 곱하는 과정까지는 au 값이 19자리로 넘칠 일이 없습니다. | |
| 533 | ||
| 534 | b의 소수점 아래 16번째와 곱합니다. 소수점 위 1~2번째, 소수점 아래 1~18번째, 소수점 아래 19~34번째에서 처리합니다. 문자열이 1칸 또 밀립니다. | |
| 535 | {{{#!if tv=tv*10 | |
| 536 | }}}{{{#!if tw=ab.substr(2,16), tw=(+tw)*(+bb.substr(15,1)), tw=tw.toString() | |
| 537 | }}}{{{#!if tw.length==17 | |
| 538 | {{{#if rb=(+rb)+(+tw.substr(0,1)), ri=(+ri)+((+tw.substr(1,18))*tv) | |
| 539 | }}}}}}{{{#!if tw.length<=16 | |
| 540 | {{{#!if ri=(+ri)+((+tw)*tv) | |
| 541 | }}}}}}{{{#!if ri=ri.toString(), ri.length==19 | |
| 542 | {{{#if rb=(+rb)+(+ri.substr(0,1)), ri=(+ri.substr(1,18)) | |
| 543 | }}}}}}{{{#!if tw=au.substr(2,16)+ab.substr(0,2), tw=(+tw)*(+bb.substr(15,1)), tw=tw.toString() | |
| 544 | }}}{{{#!if tw.length==19 | |
| 545 | {{{#if ru=(+ru)+(+tw.substr(0,1)), rb=(+rb)+(+tw.substr(1,18)) | |
| 546 | }}}}}}{{{#!if tw.length<=18 | |
| 547 | {{{#!if rb=(+rb) | |
| 548 | }}}}}}{{{#!if rb=rb.toString(), rb.length==19 | |
| 549 | {{{#if ru=(+ru)+(+rb.substr(0,2)), rb=(+rb.substr(1,18)) | |
| 550 | }}}}}}{{{#!if tw=au.substr(0,1), tw=(+tw)*(+bb.substr(15,1)) | |
| 551 | }}}{{{#!if ru=(+ru)+(+tw) | |
| 552 | }}} | |
| 553 | ||
| 554 | ||
| 555 | 502 | 여기까지가 a*b 계산과정입니다. |
| 556 | 503 | }}} |
| 557 | 504 | |
| ... | ... |