| r219 vs r220 | ||
|---|---|---|
| ... | ... | |
| 71 | 71 | |
| 72 | 72 | (반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.) |
| 73 | 73 | {{{#!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 | }}}}}} | |
| 75 | 82 | |
| 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 | ||
| 76 | 92 | 소수점 윗자릿수가 넘치면 오류코드 1번(오버플로)를 반환합니다. |
| 77 | {{{#!if ts | |
| 78 | }}}{{{#!if !ts&&!br | |
| 93 | {{{#!if ts&&!br | |
| 94 | {{{#!if ts=(tm.length<=18) | |
| 95 | }}}}}} | |
| 96 | {{{#!if !ts&&!br | |
| 79 | 97 | {{{#!if br=true, ea=1 |
| 80 | 98 | }}}}}} |
| 81 | 99 | |
| 82 | ||
| 100 | tm 앞에 의도적으로 00을 적어놓았을 수 있으므로 앞에 숫자 1을 더 붙인 다음, 이를 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다면 숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나오게 됩니다. | |
| 101 | 숫자가 아닌 문구를 섞어넣었음이 탐지될 경우 오류코드 6번(소수점 윗자리 오류)을 반환합니다. (반점(,)도 걸릴 수 있습니다.) | |
| 83 | 102 | {{{#!if ts&&!br |
| 84 | {{{#!if t | |
| 85 | ||
| 86 | ||
| 103 | {{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn) | |
| 87 | 104 | }}}}}} |
| 105 | {{{#!if !ts&&!br | |
| 106 | {{{#!if br=true, ea=6 | |
| 107 | }}}}}} | |
| 88 | 108 | |
| 89 | ||
| 109 | 소수점 아래 부분을 검사합니다. 앞에서 소수점 개수를 검사했으므로 소수점 아래 부분에 점(.)이 더 이상 나올 수 없습니다. | |
| 110 | 소수점 아래 입력한 자릿수가 19자리를 넘어가면 오류 대신 경고코드 1번(소수점 아래 자릿수 너무 많음)을 반환하고 소수점 아래 자릿수를 최대 18자리로 잘라냅니다. (이하 이상한 문구를 섞어도 이를 계산에 넣지 않게 됩니다.) | |
| 90 | 111 | {{{#!if ts&&!br |
| 91 | {{{#!if | |
| 92 | {{{#!if | |
| 112 | {{{#!if ab.length>=19 | |
| 113 | {{{#!if wa=1, ab=ab.substr(0,18), ap=18 | |
| 93 | 114 | }}}}}} |
| 94 | {{{#!if tm= | |
| 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 | |
| 95 | 120 | }}}}}} |
| 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번(소수점 아랫자리 오류)를 반환합니다. | |
| 96 | 124 | {{{#!if !ts&&!br |
| 97 | {{{#!if br=true, ea= | |
| 125 | {{{#!if br=true, ea=7 | |
| 98 | 126 | }}}}}} |
| 99 | 127 | |
| 100 | ||
| 128 | 이와 같은 방법으로 b도 유효성 검사를 실행합니다. | |
| 129 | ||
| 101 | 130 | }}} |
| 102 | }}} | |
| 103 | 131 | error code 05 번 ~ : 입력한 변수는 숫자로 읽을 수 없습니다. |
| 104 | 132 | * 5번 : 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요. |
| 105 | 133 | |
| ... | ... |