| r139 vs r140 | ||
|---|---|---|
| ... | ... | |
| 497 | 497 | }}} |
| 498 | 498 | |
| 499 | 499 | {{{#!if f=="*" |
| 500 | 곱셈 연산과정을 봅니다. | |
| 500 | 501 | 18자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다. |
| 501 | 502 | 다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다. |
| 502 | 503 | |
| ... | ... | |
| 508 | 509 | {{{#!if bu=bu.substr(1,bd-1) |
| 509 | 510 | }}}}}} |
| 510 | 511 | |
| 512 | a 또는 b값이 0이 되려면 au, ab 둘 다 0이 되거나 bu, bb 둘 다 0이 되어야 합니다. | |
| 513 | {{{#!if ((+au==0)&&(+ab!=0))||((+bu==0)&&(+bb==0)) | |
| 514 | {{{#!if rs="", ru="0", rb="", ri="", rp=0 | |
| 515 | }}}}}} | |
| 516 | 0을 곱하면 0이 되므로, a와 b 모두 0이 아닌 값을 곱할 때를 봅니다. | |
| 517 | {{{#!if ((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0)) | |
| 518 | ||
| 511 | 519 | 소수점 아래 자리가 존재하는 경우 소수점 아래 자리를 먼저 연산합니다. 그렇지 않은 경우 소수점 윗부분을 연산합니다. |
| 512 | 520 | {{{#!if (ap>0)||(bp>0) |
| 513 | ||
| 514 | 521 | 소수점 아래 자릿수가 있는 숫자끼리 곱한 결과는 일반적으로 자릿수+자릿수만큼 소수점 아래 자릿수가 늘어납니다. java long으로 해볼 수 있는 자릿수가 18자리이므로 ap+bp값이 18을 넘어갈 경우 제19번 자리수부터 생각해야 합니다. |
| 515 | 522 | 먼저 rp를 ap+bp 값으로 저장합니다. |
| 516 | 523 | {{{#!if this.rp=ap+bp |
| ... | ... | |
| 522 | 529 | {{{#!if ap+bp<=18 |
| 523 | 530 | {{{#!if i=ap+bp |
| 524 | 531 | }}}}}}}}} |
| 532 | ||
| 525 | 533 | 18자리씩 곱셈계산을 할 수 있도록 입력했던 a와 b의 문자열을 확장할 것입니다. |
| 526 | 534 | a와 b 각각 소수점 윗자리와 소수점 아래자리의 문자열의 빈 공간을 0으로 채워 18자로 만듭니다. |
| 527 | 535 | 소수점 윗자리는 왼쪽에서 0을 채워나갑니다. |
| ... | ... | |
| 546 | 554 | }}}}}}{{{#!if au.length<18 |
| 547 | 555 | {{{#!if au="0"+au |
| 548 | 556 | }}}}}} |
| 549 | ||
| 550 | 557 | {{{#!if au.length<18 |
| 551 | 558 | {{{#!if au="0"+au |
| 552 | 559 | }}}}}}{{{#!if au.length<18 |
| ... | ... | |
| 586 | 593 | }}}}}}{{{#!if bu.length<18 |
| 587 | 594 | {{{#!if bu="0"+bu |
| 588 | 595 | }}}}}} |
| 589 | ||
| 590 | 596 | {{{#!if bu.length<18 |
| 591 | 597 | {{{#!if bu="0"+bu |
| 592 | 598 | }}}}}}{{{#!if bu.length<18 |
| ... | ... | |
| 606 | 612 | }}}}}} |
| 607 | 613 | |
| 608 | 614 | 소수점 아래자리는 오른쪽에서 0을 채웁니다. (ap, bp값은 보존됩니다.) |
| 615 | {{{#!if ab.length<18 | |
| 616 | {{{#!if ab=ab+"0" | |
| 617 | }}}}}}{{{#!if ab.length<18 | |
| 618 | {{{#!if ab=ab+"0" | |
| 619 | }}}}}}{{{#!if ab.length<18 | |
| 620 | {{{#!if ab=ab+"0" | |
| 621 | }}}}}}{{{#!if ab.length<18 | |
| 622 | {{{#!if ab=ab+"0" | |
| 623 | }}}}}}{{{#!if ab.length<18 | |
| 624 | {{{#!if ab=ab+"0" | |
| 625 | }}}}}}{{{#!if ab.length<18 | |
| 626 | {{{#!if ab=ab+"0" | |
| 627 | }}}}}}{{{#!if ab.length<18 | |
| 628 | {{{#!if ab=ab+"0" | |
| 629 | }}}}}}{{{#!if ab.length<18 | |
| 630 | {{{#!if ab=ab+"0" | |
| 631 | }}}}}}{{{#!if ab.length<18 | |
| 632 | {{{#!if ab=ab+"0" | |
| 633 | }}}}}}{{{#!if ab.length<18 | |
| 634 | {{{#!if ab=ab+"0" | |
| 635 | }}}}}} | |
| 636 | {{{#!if ab.length<18 | |
| 637 | {{{#!if ab=ab+"0" | |
| 638 | }}}}}}{{{#!if ab.length<18 | |
| 639 | {{{#!if ab=ab+"0" | |
| 640 | }}}}}}{{{#!if ab.length<18 | |
| 641 | {{{#!if ab=ab+"0" | |
| 642 | }}}}}}{{{#!if ab.length<18 | |
| 643 | {{{#!if ab=ab+"0" | |
| 644 | }}}}}}{{{#!if ab.length<18 | |
| 645 | {{{#!if ab=ab+"0" | |
| 646 | }}}}}}{{{#!if ab.length<18 | |
| 647 | {{{#!if ab=ab+"0" | |
| 648 | }}}}}}{{{#!if ab.length<18 | |
| 649 | {{{#!if ab=ab+"0" | |
| 650 | }}}}}}{{{#!if ab.length<18 | |
| 651 | {{{#!if ab=ab+"0" | |
| 652 | }}}}}} | |
| 609 | 653 | |
| 654 | {{{#!if bb.length<18 | |
| 655 | {{{#!if bb=bb+"0" | |
| 656 | }}}}}}{{{#!if bb.length<18 | |
| 657 | {{{#!if bb=bb+"0" | |
| 658 | }}}}}}{{{#!if bb.length<18 | |
| 659 | {{{#!if bb=bb+"0" | |
| 660 | }}}}}}{{{#!if bb.length<18 | |
| 661 | {{{#!if bb=bb+"0" | |
| 662 | }}}}}}{{{#!if bb.length<18 | |
| 663 | {{{#!if bb=bb+"0" | |
| 664 | }}}}}}{{{#!if bb.length<18 | |
| 665 | {{{#!if bb=bb+"0" | |
| 666 | }}}}}}{{{#!if bb.length<18 | |
| 667 | {{{#!if bb=bb+"0" | |
| 668 | }}}}}}{{{#!if bb.length<18 | |
| 669 | {{{#!if bb=bb+"0" | |
| 670 | }}}}}}{{{#!if bb.length<18 | |
| 671 | {{{#!if bb=bb+"0" | |
| 672 | }}}}}}{{{#!if bb.length<18 | |
| 673 | {{{#!if bb=bb+"0" | |
| 674 | }}}}}} | |
| 675 | {{{#!if bb.length<18 | |
| 676 | {{{#!if bb=bb+"0" | |
| 677 | }}}}}}{{{#!if bb.length<18 | |
| 678 | {{{#!if bb=bb+"0" | |
| 679 | }}}}}}{{{#!if bb.length<18 | |
| 680 | {{{#!if bb=bb+"0" | |
| 681 | }}}}}}{{{#!if bb.length<18 | |
| 682 | {{{#!if bb=bb+"0" | |
| 683 | }}}}}}{{{#!if bb.length<18 | |
| 684 | {{{#!if bb=bb+"0" | |
| 685 | }}}}}}{{{#!if bb.length<18 | |
| 686 | {{{#!if bb=bb+"0" | |
| 687 | }}}}}}{{{#!if bb.length<18 | |
| 688 | {{{#!if bb=bb+"0" | |
| 689 | }}}}}}{{{#!if bb.length<18 | |
| 690 | {{{#!if bb=bb+"0" | |
| 691 | }}}}}} | |
| 692 | ||
| 610 | 693 | }}} |
| 694 | }}} | |
| 611 | 695 | |
| 612 | 696 | error code 03 번 : 오버플로 |
| 613 | 697 | error code 04 번 : 언더플로 |
| ... | ... |