r364 vs r365
......
5959
변수 tm와 tn을 가져와 유효성 검사를 실행합니다.
6060
먼저 소수점을 2개 이상 입력했음이 탐지된다면 오류코드 5번(이중 소수점 표기)을 반환합니다.
6161
소수점을 입력하면 indexOf와 lastIndexOf는 서로 다른 값을 가리키게 됩니다. 소수점을 입력하지 않았을 경우 indexOf와 lastIndexOf는 -1로 서로 같은 값을 가리키게 됩니다.
62
{{{#!if ts=(as.indexOf(".")==as.lastIndexOf(".")),
63
}}}{{{#!if !ts&&!br
64
{{{#!if br=true, ea=5
65
}}}}}}
62
{{{#!if ts=(as.indexOf(".")==as.lastIndexOf(".")), br=ts?br:true, ea=ts?0:5
63
}}}
6664
6765
문제가 없으면 au를 tm으로 복제하고 검사를 계속 합니다.
68
앞자리가 마이너스(-)일 경우 이를 잘라냅니다.
66
앞자리가 마이너스(-)일 경우 이를 잘라냅니다. 이 때 소수점 윗자릿수가 넘치면 오류코드 1번(오버플로)를 반환합니다.
6967
{{{#!if ts&&!br
70
{{{#!if tm=au, tm[0]==45
71
{{{#!if tm=tm.substr(1)
68
{{{#!if tm=(tm[0]==45)?au.substr(1):au, ts=(tm.length<=18), br=ts?br:true, ea=ts?0:1
7269
}}}}}}
73
소수점 윗자릿수가 넘치면 오류코드 1번(오버플로)를 반환합니다.
74
{{{#!if ts=(tm.length<=18)
75
}}}}}}
76
{{{#!if !ts&&!br
77
{{{#!if br=true, ea=1
78
}}}}}}
7970
8071
의도적으로 00을 적어놓았을 수 있으므로 tm 앞에 숫자 1을 더 붙인 다음, 이를 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다면 숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나오게 됩니다.
8172
숫자가 아닌 문구를 섞어넣었음이 탐지될 경우 오류코드 6번(소수점 윗자리 오류)을 반환합니다. (반점(,)도 걸릴 수 있습니다.)
8273
{{{#!if ts&&!br
83
{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
74
{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn), br=ts?br:true, ea=ts?0:6
8475
}}}}}}
85
{{{#!if !ts&&!br
86
{{{#!if br=true, ea=6
87
}}}}}}
8876
8977
소수점 아래 부분을 검사합니다. 앞에서 소수점 개수를 검사했으므로 소수점 아래 부분에 점(.)이 더 이상 나올 수 없습니다.
9078
소수점 아래 입력한 자릿수가 19자리를 넘어가면 오류 대신 경고코드 1번(소수점 아래 자릿수 너무 많음)을 반환하고 소수점 아래 자릿수를 최대 18자리로 잘라냅니다. (이하 이상한 문구를 섞어도 이를 계산에 넣지 않게 됩니다.)
......
128116
}}}}}}}}}
129117
130118
##== 2차 초기화 ==
131
유효성 검사가 종료되었으면 ts와 br를 false로 초기화합니다 유효성 검사에 쓰인 tm과 tn 값을 빈 문자열 값으로 초기화합니다.
132
{{{#!if tm="", tn="", ts=false, br=false
119
유효성 검사가 종료되었으면 ts와 br, ps를 false로 초기화합니다 유효성 검사에 쓰인 tm과 tn 값을 빈 문자열 값으로 초기화합니다.
120
{{{#!if tm="", tn="", ts=false, br=false, ps=false
133121
}}}
134122
135123
입력한 소수점 아래에 입력한 값을 정리합니다. 이에 따라 ap, bp값도 다시 조정됩니다.
......