r139 vs r140
......
497497
}}}
498498
499499
{{{#!if f=="*"
500
곱셈 연산과정을 봅니다.
500501
18자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
501502
다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
502503
......
508509
{{{#!if bu=bu.substr(1,bd-1)
509510
}}}}}}
510511
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
511519
소수점 아래 자리가 존재하는 경우 소수점 아래 자리를 먼저 연산합니다. 그렇지 않은 경우 소수점 윗부분을 연산합니다.
512520
{{{#!if (ap>0)||(bp>0)
513
514521
소수점 아래 자릿수가 있는 숫자끼리 곱한 결과는 일반적으로 자릿수+자릿수만큼 소수점 아래 자릿수가 늘어납니다. java long으로 해볼 수 있는 자릿수가 18자리이므로 ap+bp값이 18을 넘어갈 경우 제19번 자리수부터 생각해야 합니다.
515522
먼저 rp를 ap+bp 값으로 저장합니다.
516523
{{{#!if this.rp=ap+bp
......
522529
{{{#!if ap+bp<=18
523530
{{{#!if i=ap+bp
524531
}}}}}}}}}
532
525533
18자리씩 곱셈계산을 할 수 있도록 입력했던 a와 b의 문자열을 확장할 것입니다.
526534
a와 b 각각 소수점 윗자리와 소수점 아래자리의 문자열의 빈 공간을 0으로 채워 18자로 만듭니다.
527535
소수점 윗자리는 왼쪽에서 0을 채워나갑니다.
......
546554
}}}}}}{{{#!if au.length<18
547555
{{{#!if au="0"+au
548556
}}}}}}
549
550557
{{{#!if au.length<18
551558
{{{#!if au="0"+au
552559
}}}}}}{{{#!if au.length<18
......
586593
}}}}}}{{{#!if bu.length<18
587594
{{{#!if bu="0"+bu
588595
}}}}}}
589
590596
{{{#!if bu.length<18
591597
{{{#!if bu="0"+bu
592598
}}}}}}{{{#!if bu.length<18
......
606612
}}}}}}
607613
608614
소수점 아래자리는 오른쪽에서 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
}}}}}}
609653
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
610693
}}}
694
}}}
611695
612696
error code 03 번 : 오버플로
613697
error code 04 번 : 언더플로
......