r153 vs r154
......
481481
482482
변수 tw를 가져옵니다. (tv는 1로 초기화 된 채로 있습니다. 연산 과정 중간중간에 마지막 자릿수를 보정하고자 10씩 곱하게 됩니다.)
483483
곱셈은 18자리를 끊어서 계산합니다. 소수점 아래 18자리의 아래인 제19~36번 자리를 ri로 둡니다. 소수점 위 19~36번째 자리는 rs로 둡니다.
484
ri에서 자릿수가 넘치면 넘친 만큼을 rb로 넘기고, rb에서 자릿수가 넘치면 넘친 만큼을 ru로 넘깁니다. ru에서 자릿수가 넘치면 rs로 넘깁니다.
485484
486
이를테면 소수점 아래 19~36번 자리에서 18자리가 된 ab 문자열 전체를 숫자바꾸고 bb의 문자열의 마지막 (18번째) 자리의 값곱한 값을 더합니.
487
{{{#!if tw=ab.substr(0,18), tw=(+tw)*(+bb.substr(17,1)), tw=tw.toString()
488
}}}
489
18자리에서 넘쳐 19자리가 되면 넘친 앞의 1자리를 rb로 넘기고 나머지 18자리를 ri에 더합니다.
490
{{{#!if tw.length==19
491
{{{#if rb=(+rb)+(+tw.substr(0,1)), ri=(+ri)+((+tw.substr(1,18))*tv)
492
}}}}}}{{{#!if tw.length<=18
493
{{{#!if ri=(+ri)+((+tw)*tv)
494
}}}}}}
495
496
앞으로 있을 계산으로
485
앞으계산은음과 같습니다.
497486
* ri를 더했더니 ri가 19자리 숫자로 넘치면 넘친 앞의 1자리를 rb로 넘깁니다.
498
* 이렇게 했더니 rb가 19자리로 넘쳤다면 넘친 앞의 1자리를 ru로 넘깁니다.
499
* 이렇게 1자리를 ru로 넘겼는데 ru가 19자리로 넘친다면 넘친 앞의 1자리를 rs로 넘깁니다.
487
* rb가 19자리로 넘쳤다면 넘친 앞의 1자리를 ru로 넘깁니다.
488
* ru가 19자리로 넘친다면 넘친 앞의 1자리를 rs로 넘깁니다.
500489
(rs는 상용로그로 보았을 때 log a<18, log b<18 에서 log (a*b) = log a + log b < 36이므로 19자리로 넘치지 않습니다.)
501490
문자열로 바꾸고 문자열을 쪼갠 다음 숫자로 바꾸는 과정입니다. 이를 if로 바꾸면 다음과 같습니다.
502491
{{{#!if ri=ri.toString(), ri.length==19
......
621610
와 }}}}}}{{{#!if eb==1
622611
b}}}에 너무 많은 값을 입력했습니다. {{{#gray (오버플로)}}}}}}
623612
}}}}}}
624
==# 2-1 #==
625
{{{#!wiki style="font-weight: 300; font-size: 20px"
626
{{{#!if +a>=0
627
@a@}}}{{{#!if +a<0
628
(@a@)}}} {{{#!if f == '+'
629
{{{#!if r =(+a)+(+b)+0.0, u=(+a)+(+b)
630
}}}+}}}{{{#!if f == '-'
631
{{{#!if r =(+a)-(+b)+0.0, u=(+a)-(+b)
632
}}}-}}}{{{#!if f == '*'
633
{{{#!if r =((+a)+0.0)*((+b)+0.0), u=(+a)*(+b)
634
}}}×}}}{{{#!if f == '/'
635
{{{#!if r =((+a)+0.0)/((+b)+0.0), u=(+a)/(+b)
636
}}}÷}}} {{{#!if +b>=0
637
@b@}}}{{{#!if +b<0
638
(@b@)}}} = {{{#!if u=r-u, d=false
639
##u : 나누어떨어지는 부분 절삭하기. d : dot 매김 여부
640
}}}{{{#!if r=r.toString(), u=u.toString()
641
}}}{{{#!if o=0, l=r.length
642
}}}{{{#!if (r!=null)&&(r!="")
643
{{{#!if +o<l
644
##1
645
{{{#!if p=r[o]
646
}}}{{{#!if p==45
647
-}}}{{{#!if p==46
648
{{{#!if d=true
649
}}}}}}{{{#!if p==48
650
0}}}{{{#!if p==49
651
1}}}{{{#!if p==50
652
2}}}{{{#!if p==51
653
3}}}{{{#!if p==52
654
4}}}{{{#!if p==53
655
5}}}{{{#!if p==54
656
6}}}{{{#!if p==55
657
7}}}{{{#!if p==56
658
8}}}{{{#!if p==57
659
9}}}{{{#!if o+=1
660
}}}}}}{{{#!if (o<l)&&(d==false)
661
##2
662
{{{#!if p=r[o]
663
}}}{{{#!if p==46
664
{{{#!if d=true
665
}}}}}}{{{#!if p==48
666
0}}}{{{#!if p==49
667
1}}}{{{#!if p==50
668
2}}}{{{#!if p==51
669
3}}}{{{#!if p==52
670
4}}}{{{#!if p==53
671
5}}}{{{#!if p==54
672
6}}}{{{#!if p==55
673
7}}}{{{#!if p==56
674
8}}}{{{#!if p==57
675
9}}}{{{#!if o+=1
676
}}}}}}{{{#!if (o<l)&&(d==false)
677
##3
678
{{{#!if p=r[o]
679
}}}{{{#!if p==46
680
{{{#!if d=true
681
}}}}}}{{{#!if p==48
682
0}}}{{{#!if p==49
683
1}}}{{{#!if p==50
684
2}}}{{{#!if p==51
685
3}}}{{{#!if p==52
686
4}}}{{{#!if p==53
687
5}}}{{{#!if p==54
688
6}}}{{{#!if p==55
689
7}}}{{{#!if p==56
690
8}}}{{{#!if p==57
691
9}}}{{{#!if o+=1
692
}}}}}}{{{#!if (o<l)&&(d==false)
693
##4
694
{{{#!if p=r[o]
695
}}}{{{#!if p==46
696
{{{#!if d=true
697
}}}}}}{{{#!if p==48
698
0}}}{{{#!if p==49
699
1}}}{{{#!if p==50
700
2}}}{{{#!if p==51
701
3}}}{{{#!if p==52
702
4}}}{{{#!if p==53
703
5}}}{{{#!if p==54
704
6}}}{{{#!if p==55
705
7}}}{{{#!if p==56
706
8}}}{{{#!if p==57
707
9}}}{{{#!if o+=1
708
}}}}}}{{{#!if (o<l)&&(d==false)
709
##5
710
{{{#!if p=r[o]
711
}}}{{{#!if p==46
712
{{{#!if d=true
713
}}}}}}{{{#!if p==48
714
0}}}{{{#!if p==49
715
1}}}{{{#!if p==50
716
2}}}{{{#!if p==51
717
3}}}{{{#!if p==52
718
4}}}{{{#!if p==53
719
5}}}{{{#!if p==54
720
6}}}{{{#!if p==55
721
7}}}{{{#!if p==56
722
8}}}{{{#!if p==57
723
9}}}{{{#!if o+=1
724
}}}}}}{{{#!if (o<l)&&(d==false)
725
##6
726
{{{#!if p=r[o]
727
}}}{{{#!if p==46
728
{{{#!if d=true
729
}}}}}}{{{#!if p==48
730
0}}}{{{#!if p==49
731
1}}}{{{#!if p==50
732
2}}}{{{#!if p==51
733
3}}}{{{#!if p==52
734
4}}}{{{#!if p==53
735
5}}}{{{#!if p==54
736
6}}}{{{#!if p==55
737
7}}}{{{#!if p==56
738
8}}}{{{#!if p==57
739
9}}}{{{#!if o+=1
740
}}}}}}{{{#!if (o<l)&&(d==false)
741
##7
742
{{{#!if p=r[o]
743
}}}{{{#!if p==46
744
{{{#!if d=true
745
}}}}}}{{{#!if p==48
746
0}}}{{{#!if p==49
747
1}}}{{{#!if p==50
748
2}}}{{{#!if p==51
749
3}}}{{{#!if p==52
750
4}}}{{{#!if p==53
751
5}}}{{{#!if p==54
752
6}}}{{{#!if p==55
753
7}}}{{{#!if p==56
754
8}}}{{{#!if p==57
755
9}}}{{{#!if o+=1
756
}}}}}}{{{#!if (o<l)&&(d==false)
757
##8
758
{{{#!if p=r[o]
759
}}}{{{#!if p==46
760
{{{#!if d=true
761
}}}}}}{{{#!if p==48
762
0}}}{{{#!if p==49
763
1}}}{{{#!if p==50
764
2}}}{{{#!if p==51
765
3}}}{{{#!if p==52
766
4}}}{{{#!if p==53
767
5}}}{{{#!if p==54
768
6}}}{{{#!if p==55
769
7}}}{{{#!if p==56
770
8}}}{{{#!if p==57
771
9}}}{{{#!if o+=1
772
}}}}}}{{{#!if (o<l)&&(d==false)
773
##9
774
{{{#!if p=r[o]
775
}}}{{{#!if p==46
776
{{{#!if d=true
777
}}}}}}{{{#!if p==48
778
0}}}{{{#!if p==49
779
1}}}{{{#!if p==50
780
2}}}{{{#!if p==51
781
3}}}{{{#!if p==52
782
4}}}{{{#!if p==53
783
5}}}{{{#!if p==54
784
6}}}{{{#!if p==55
785
7}}}{{{#!if p==56
786
8}}}{{{#!if p==57
787
9}}}{{{#!if o+=1
788
}}}}}}{{{#!if (o<l)&&(d==false)
789
##10
790
{{{#!if p=r[o]
791
}}}{{{#!if p==46
792
{{{#!if d=true
793
}}}}}}{{{#!if p==48
794
0}}}{{{#!if p==49
795
1}}}{{{#!if p==50
796
2}}}{{{#!if p==51
797
3}}}{{{#!if p==52
798
4}}}{{{#!if p==53
799
5}}}{{{#!if p==54
800
6}}}{{{#!if p==55
801
7}}}{{{#!if p==56
802
8}}}{{{#!if p==57
803
9}}}{{{#!if o+=1
804
}}}}}}{{{#!if (o<l)&&(d==false)
805
##11
806
{{{#!if p=r[o]
807
}}}{{{#!if p==46
808
{{{#!if d=true
809
}}}}}}{{{#!if p==48
810
0}}}{{{#!if p==49
811
1}}}{{{#!if p==50
812
2}}}{{{#!if p==51
813
3}}}{{{#!if p==52
814
4}}}{{{#!if p==53
815
5}}}{{{#!if p==54
816
6}}}{{{#!if p==55
817
7}}}{{{#!if p==56
818
8}}}{{{#!if p==57
819
9}}}{{{#!if o+=1
820
}}}}}}{{{#!if (o<l)&&(d==false)
821
##12
822
{{{#!if p=r[o]
823
}}}{{{#!if p==46
824
{{{#!if d=true
825
}}}}}}{{{#!if p==48
826
0}}}{{{#!if p==49
827
1}}}{{{#!if p==50
828
2}}}{{{#!if p==51
829
3}}}{{{#!if p==52
830
4}}}{{{#!if p==53
831
5}}}{{{#!if p==54
832
6}}}{{{#!if p==55
833
7}}}{{{#!if p==56
834
8}}}{{{#!if p==57
835
9}}}{{{#!if o+=1
836
}}}}}}{{{#!if (o<l)&&(d==false)
837
##13
838
{{{#!if p=r[o]
839
}}}{{{#!if p==46
840
{{{#!if d=true
841
}}}}}}{{{#!if p==48
842
0}}}{{{#!if p==49
843
1}}}{{{#!if p==50
844
2}}}{{{#!if p==51
845
3}}}{{{#!if p==52
846
4}}}{{{#!if p==53
847
5}}}{{{#!if p==54
848
6}}}{{{#!if p==55
849
7}}}{{{#!if p==56
850
8}}}{{{#!if p==57
851
9}}}{{{#!if o+=1
852
}}}}}}{{{#!if (o<l)&&(d==false)
853
##14
854
{{{#!if p=r[o]
855
}}}{{{#!if p==46
856
{{{#!if d=true
857
}}}}}}{{{#!if p==48
858
0}}}{{{#!if p==49
859
1}}}{{{#!if p==50
860
2}}}{{{#!if p==51
861
3}}}{{{#!if p==52
862
4}}}{{{#!if p==53
863
5}}}{{{#!if p==54
864
6}}}{{{#!if p==55
865
7}}}{{{#!if p==56
866
8}}}{{{#!if p==57
867
9}}}{{{#!if o+=1
868
}}}}}}{{{#!if (o<l)&&(d==false)
869
##15
870
{{{#!if p=r[o]
871
}}}{{{#!if p==46
872
{{{#!if d=true
873
}}}}}}{{{#!if p==48
874
0}}}{{{#!if p==49
875
1}}}{{{#!if p==50
876
2}}}{{{#!if p==51
877
3}}}{{{#!if p==52
878
4}}}{{{#!if p==53
879
5}}}{{{#!if p==54
880
6}}}{{{#!if p==55
881
7}}}{{{#!if p==56
882
8}}}{{{#!if p==57
883
9}}}{{{#!if o+=1
884
}}}}}}{{{#!if (o<l)&&(d==false)
885
##16
886
{{{#!if p=r[o]
887
}}}{{{#!if p==46
888
{{{#!if d=true
889
}}}}}}{{{#!if p==48
890
0}}}{{{#!if p==49
891
1}}}{{{#!if p==50
892
2}}}{{{#!if p==51
893
3}}}{{{#!if p==52
894
4}}}{{{#!if p==53
895
5}}}{{{#!if p==54
896
6}}}{{{#!if p==55
897
7}}}{{{#!if p==56
898
8}}}{{{#!if p==57
899
9}}}{{{#!if o+=1
900
}}}}}}{{{#!if (o<l)&&(d==false)
901
##17
902
{{{#!if p=r[o]
903
}}}{{{#!if p==46
904
{{{#!if d=true
905
}}}}}}{{{#!if p==48
906
0}}}{{{#!if p==49
907
1}}}{{{#!if p==50
908
2}}}{{{#!if p==51
909
3}}}{{{#!if p==52
910
4}}}{{{#!if p==53
911
5}}}{{{#!if p==54
912
6}}}{{{#!if p==55
913
7}}}{{{#!if p==56
914
8}}}{{{#!if p==57
915
9}}}{{{#!if o+=1
916
}}}}}}{{{#!if (o<l)&&(d==false)
917
##18
918
{{{#!if p=r[o]
919
}}}{{{#!if p==46
920
{{{#!if d=true
921
}}}}}}{{{#!if p==48
922
0}}}{{{#!if p==49
923
1}}}{{{#!if p==50
924
2}}}{{{#!if p==51
925
3}}}{{{#!if p==52
926
4}}}{{{#!if p==53
927
5}}}{{{#!if p==54
928
6}}}{{{#!if p==55
929
7}}}{{{#!if p==56
930
8}}}{{{#!if p==57
931
9}}}{{{#!if o+=1
932
}}}}}}{{{#!if (o<l)&&(d==false)
933
##19
934
{{{#!if p=r[o]
935
}}}{{{#!if p==46
936
{{{#!if d=true
937
}}}}}}{{{#!if p==48
938
0}}}{{{#!if p==49
939
1}}}{{{#!if p==50
940
2}}}{{{#!if p==51
941
3}}}{{{#!if p==52
942
4}}}{{{#!if p==53
943
5}}}{{{#!if p==54
944
6}}}{{{#!if p==55
945
7}}}{{{#!if p==56
946
8}}}{{{#!if p==57
947
9}}}{{{#!if o+=1
948
}}}}}}{{{#!if (o<l)&&(d==false)
949
##20
950
{{{#!if p=r[o]
951
}}}{{{#!if p==46
952
{{{#!if d=true
953
}}}}}}{{{#!if p==48
954
0}}}{{{#!if p==49
955
1}}}{{{#!if p==50
956
2}}}{{{#!if p==51
957
3}}}{{{#!if p==52
958
4}}}{{{#!if p==53
959
5}}}{{{#!if p==54
960
6}}}{{{#!if p==55
961
7}}}{{{#!if p==56
962
8}}}{{{#!if p==57
963
9}}}{{{#!if o+=1
964
}}}}}}{{{#!if o=0, l=u.length
965
}}}{{{#!if u[0]==45
966
##음수로 마이너스가 표시되면 넘기기
967
{{{#!if o+=1
968
}}}}}}{{{#!if l-o>2
969
##소수점이 나오면 "0."으로 2자리 차지하므로 소수점 표기.
970
{{{#!if o+=1
971
##일의 자리 넘기기
972
}}}{{{#!if (u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48)||(u[o+5]!=48)||(u[o+6]!=48)
973
##".000000"은 표기하지 않음. 소수점 표기
974
.{{{#!if o+=1
975
}}}}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48)||(u[o+5]!=48))
976
##1
977
{{{#!if p=u[o]
978
}}}{{{#!if p==48
979
0}}}{{{#!if p==49
980
1}}}{{{#!if p==50
981
2}}}{{{#!if p==51
982
3}}}{{{#!if p==52
983
4}}}{{{#!if p==53
984
5}}}{{{#!if p==54
985
6}}}{{{#!if p==55
986
7}}}{{{#!if p==56
987
8}}}{{{#!if p==57
988
9}}}{{{#!if o+=1
989
}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48)||(u[o+4]!=48))
990
##2
991
{{{#!if p=u[o]
992
}}}{{{#!if p==48
993
0}}}{{{#!if p==49
994
1}}}{{{#!if p==50
995
2}}}{{{#!if p==51
996
3}}}{{{#!if p==52
997
4}}}{{{#!if p==53
998
5}}}{{{#!if p==54
999
6}}}{{{#!if p==55
1000
7}}}{{{#!if p==56
1001
8}}}{{{#!if p==57
1002
9}}}{{{#!if o+=1
1003
}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48)||(u[o+3]!=48))
1004
##3
1005
{{{#!if p=u[o]
1006
}}}{{{#!if p==48
1007
0}}}{{{#!if p==49
1008
1}}}{{{#!if p==50
1009
2}}}{{{#!if p==51
1010
3}}}{{{#!if p==52
1011
4}}}{{{#!if p==53
1012
5}}}{{{#!if p==54
1013
6}}}{{{#!if p==55
1014
7}}}{{{#!if p==56
1015
8}}}{{{#!if p==57
1016
9}}}{{{#!if o+=1
1017
}}}}}}{{{#!if (o<l)&&(d==true)&&((u[o+1]!=48)||(u[o+2]!=48))
1018
##4
1019
{{{#!if p=u[o]
1020
}}}{{{#!if p==48
1021
0}}}{{{#!if p==49
1022
1}}}{{{#!if p==50
1023
2}}}{{{#!if p==51
1024
3}}}{{{#!if p==52
1025
4}}}{{{#!if p==53
1026
5}}}{{{#!if p==54
1027
6}}}{{{#!if p==55
1028
7}}}{{{#!if p==56
1029
8}}}{{{#!if p==57
1030
9}}}{{{#!if o+=1
1031
}}}}}}{{{#!if (o<l)&&(d==true)&&(u[o+1]!=48)
1032
##5
1033
{{{#!if p=u[o]
1034
}}}{{{#!if p==48
1035
0}}}{{{#!if p==49
1036
1}}}{{{#!if p==50
1037
2}}}{{{#!if p==51
1038
3}}}{{{#!if p==52
1039
4}}}{{{#!if p==53
1040
5}}}{{{#!if p==54
1041
6}}}{{{#!if p==55
1042
7}}}{{{#!if p==56
1043
8}}}{{{#!if p==57
1044
9}}}{{{#!if o+=1
1045
}}}}}}{{{#!if (o<l)&&(d==true)
1046
##6
1047
{{{#!if p=u[o]
1048
}}}{{{#!if p==48
1049
##"0" 미표기
1050
}}}{{{#!if p==49
1051
1}}}{{{#!if p==50
1052
2}}}{{{#!if p==51
1053
3}}}{{{#!if p==52
1054
4}}}{{{#!if p==53
1055
5}}}{{{#!if p==54
1056
6}}}{{{#!if p==55
1057
7}}}{{{#!if p==56
1058
8}}}{{{#!if p==57
1059
9}}}{{{#!if o+=1
1060
}}}}}}}}}}}}