r219 vs r220
......
7171
7272
(반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.)
7373
{{{#!if false
74
br와 ts 변수를 이용하여 순차적으로 검사를 진행합니다. 도중 문제가 있으면 (br를 true로 반환하고) 오류 코드를 내도록 만듭니다.
74
br와 ts 변수를 이용하여 순차적으로 검사를 진행합니다. 도중 문제가 있으면 (br를 true로 반환하고) 오류 코드를 내도록 만듭니다. a를 먼저 보며, 소수점 윗부분을 먼저 본 다음 소수점 아랫부분을 봅니다.
75
변수 tm와 tn을 가져와 유효성 검사를 실행합니다.
76
먼저 소수점을 2개 이상 입력했음이 탐지된다면 오류코드 5번(이중 소수점 표기)을 반환합니다.
77
소수점을 입력하면 indexOf와 lastIndexOf는 서로 다른 값을 가리키게 됩니다. 소수점을 입력하지 않았을 경우 indexOf와 lastIndexOf는 -1로 서로 같은 값을 가리키게 됩니다.
78
{{{#!if ts=(as.indexOf(".")==as.lastIndexOf("."))
79
}}}{{{#!if !ts&&!br
80
{{{#!if br=true, ea=5
81
}}}}}}
7582
83
문제가 없으면 au를 tm으로 복제하고 검사를 계속 합니다.
84
앞자리가 마이너스(-)일 경우 이를 잘라냅니다.
85
{{{#!if ts&&!br
86
{{{#!if tm=au
87
}}}
88
{{{#if tm[0]==45
89
{{{#!if tm=tm.substr(1,tm.length-1)
90
}}}}}}}}}
91
7692
소수점 윗자릿수가 넘치면 오류코드 1번(오버플로)를 반환합니다.
77
{{{#!if ts=((au[0]!=45)&&(au.length<=18))||((au[0]==45)&&(au.length<=19))
78
}}}{{{#!if !ts&&!br
93
{{{#!if ts&&!br
94
{{{#!if ts=(tm.length<=18)
95
}}}}}}
96
{{{#!if !ts&&!br
7997
{{{#!if br=true, ea=1
8098
}}}}}}
8199
82
2개 입력하면 오류코드 5번(이중 소수점 표기)을 반환합니다.
100
tm 앞에 의도적으로 00을 적어놓았을 있으므로 앞에 숫자 1 붙인 다음, 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나게 됩니다.
101
숫자가 아닌 문구를 섞어넣었음이 탐지될 경우 오류코드 6번(소수점 윗자리 오류)을 반환합니다. (반점(,)도 걸릴 수 있습니다.)
83102
{{{#!if ts&&!br
84
{{{#!if ts=(as.indexOf(".")==as.lastIndexOf("."))
85
}}}}}}{{{#!if !ts&&!bk
86
{{{#!if br=true, ea=5
103
{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
87104
}}}}}}
105
{{{#!if !ts&&!br
106
{{{#!if br=true, ea=6
107
}}}}}}
88108
89
숫자가 이상한 문구넣을 경우 오류코드 6번(소수점 오류)을 반환니다. (임시로 변수 tm과 tn가져옵니다.)
109
소수점 부분을 검사합니다. 앞에서 소수점 개수를 검사했으므로 소수점 아래 부분에 점(.) 더 이 나올 수 없습니다.
110
소수점 아래 입력자릿수가 19자리가면 오류 대신 경고코드 1번(소수점 아래 릿수 너무 많음)을 반환하고 소수점 아래 자릿수를 최대 18자리로 잘라냅니다. (이하 이상한 문구를 섞어도 이계산에 넣지 않게 됩니다.)
90111
{{{#!if ts&&!br
91
{{{#!if tm=au, tm[0]==45
92
{{{#!if tm=tm.substr(1, tm.length-1)
112
{{{#!if ab.length>=19
113
{{{#!if wa=1, ab=ab.substr(0,18), ap=18
93114
}}}}}}
94
{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
115
116
문자열에서 자릿수에 해당하는 index가 비어있다면 해당 문자열의 주소값은 null이 나옵니다. (예:"테스트"[3]==null) 숫자는 문자열 각 자릿수 문자열의 유니코드 값이 null이 아닌 이상 48 이상 57 이하이며, 이를 이용하여 소수점 아래 자리에 대해 유효성 검사를 합니다.
117
{{{#!if tm=ab
118
}}}{{{#!if tm.length>19
119
{{{#!if wa=1, ab=ab.substr(0,18), ap=18
95120
}}}}}}
121
{{{#!if ts=(((au[0]==null)||((au[0]>=48)&&(au[0]<=57)))&&((au[1]==null)||((au[1]>=48)&&(au[1]<=57)))&&((au[2]==null)||((au[2]>=48)&&(au[2]<=57)))&&((au[3]==null)||((au[3]>=48)&&(au[3]<=57)))&&((au[4]==null)||((au[4]>=48)&&(au[4]<=57)))&&((au[5]==null)||((au[5]>=48)&&(au[5]<=57)))&&((au[6]==null)||((au[6]>=48)&&(au[6]<=57)))&&((au[7]==null)||((au[7]>=48)&&(au[7]<=57)))&&((au[8]==null)||((au[8]>=48)&&(au[8]<=57)))&&((au[9]==null)||((au[9]>=48)&&(au[9]<=57)))&&((au[10]==null)||((au[10]>=48)&&(au[10]<=57)))&&((au[11]==null)||((au[11]>=48)&&(au[11]<=57)))&&((au[12]==null)||((au[12]>=48)&&(au[12]<=57)))&&((au[13]==null)||((au[13]>=48)&&(au[13]<=57)))&&((au[14]==null)||((au[14]>=48)&&(au[14]<=57)))&&((au[15]==null)||((au[15]>=48)&&(au[15]<=57)))&&((au[16]==null)||((au[16]>=48)&&(au[16]<=57)))&&((au[17]==null)||((au[17]>=48)&&(au[17]<=57))))
122
}}}}}}
123
소수점 아래 자리에 입력한 부분이 문제가 있으면 오류코드 7번(소수점 아랫자리 오류)를 반환합니다.
96124
{{{#!if !ts&&!br
97
{{{#!if br=true, ea=6
125
{{{#!if br=true, ea=7
98126
}}}}}}
99127
100
{{{#!if ts&&!br
128
이와 같은 방법으로 b도 유효성 검사를 실행합니다.
129
101130
}}}
102
}}}
103131
error code 05 번 ~ : 입력한 변수는 숫자로 읽을 수 없습니다.
104132
* 5번 : 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요.
105133
......