| r220 vs r221 | ||
|---|---|---|
| ... | ... | |
| 50 | 50 | }}}}}} |
| 51 | 51 | |
| 52 | 52 | ##== 유효성 검사 == |
| 53 | the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기. 소수점 위 최대 18자리, 소수점 아래 최대 18자리 | |
| 54 | ||
| 55 | ||
| 56 | ||
| 57 | ||
| 58 | ||
| 59 | ||
| 60 | ||
| 61 | ||
| 53 | the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기를 합니다. (소수점 위 최대 18자리, 소수점 아래 최대 18자리) | |
| 62 | 54 | |
| 63 | {{{#!if ((bu[0]!=45)&&(bu.length>=19))||((bu[0]==45)&&(bu.length>=20)) | |
| 64 | error code of b 01번 : 오버플로 | |
| 65 | {{{#!if eb=1 | |
| 66 | }}}}}} | |
| 67 | {{{#!if bb.length>=19 | |
| 68 | warning code of b 01번 : 소수점 아래 자릿수를 너무 많이 입력했습니다. 소수점 아래 18자리까지만 취급합니다. | |
| 69 | {{{#!if wb=1, bb=bb.substr(0,18), bp=18 | |
| 70 | }}}}}} | |
| 71 | ||
| 72 | 55 | (반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.) |
| 73 | ||
| 56 | ||
| 74 | 57 | br와 ts 변수를 이용하여 순차적으로 검사를 진행합니다. 도중 문제가 있으면 (br를 true로 반환하고) 오류 코드를 내도록 만듭니다. a를 먼저 보며, 소수점 윗부분을 먼저 본 다음 소수점 아랫부분을 봅니다. |
| 75 | 58 | 변수 tm와 tn을 가져와 유효성 검사를 실행합니다. |
| 76 | 59 | 먼저 소수점을 2개 이상 입력했음이 탐지된다면 오류코드 5번(이중 소수점 표기)을 반환합니다. |
| ... | ... | |
| 113 | 96 | {{{#!if wa=1, ab=ab.substr(0,18), ap=18 |
| 114 | 97 | }}}}}} |
| 115 | 98 | |
| 116 | 문자열에서 자릿수에 해당하는 index가 비어있다면 해당 문자열의 주소값은 null이 나옵니다. (예:"테스트"[3]==null) 숫자는 문자열 각 자릿수 문자열의 유니코드 값이 null이 아닌 이상 48 이상 57 이하이며, 이를 이용하여 소수점 아래 자리에 대해 유효성 검사를 합니다. | |
| 117 | {{{#!if t | |
| 118 | ||
| 119 | ||
| 99 | 앞에서 소수점 아래 자릿수를 18자 이하로 줄였습니다. 문자열에서 자릿수에 해당하는 index가 비어있다면 해당 문자열의 주소값은 null이 나옵니다. (예:"테스트"[3]==null) 숫자는 문자열 각 자릿수 문자열의 유니코드 값이 null이 아닌 이상 48 이상 57 이하이며, 이를 이용하여 소수점 아래 18자리에 대해 유효성 검사를 합니다. | |
| 100 | {{{#!if ts=(((ab[0]==null)||((ab[0]>=48)&&(ab[0]<=57)))&&((ab[1]==null)||((ab[1]>=48)&&(ab[1]<=57)))&&((ab[2]==null)||((ab[2]>=48)&&(ab[2]<=57)))&&((ab[3]==null)||((ab[3]>=48)&&(ab[3]<=57)))&&((ab[4]==null)||((ab[4]>=48)&&(ab[4]<=57)))&&((ab[5]==null)||((ab[5]>=48)&&(ab[5]<=57)))&&((ab[6]==null)||((ab[6]>=48)&&(ab[6]<=57)))&&((ab[7]==null)||((ab[7]>=48)&&(ab[7]<=57)))&&((ab[8]==null)||((ab[8]>=48)&&(ab[8]<=57)))&&((ab[9]==null)||((ab[9]>=48)&&(ab[9]<=57)))&&((ab[10]==null)||((ab[10]>=48)&&(ab[10]<=57)))&&((ab[11]==null)||((ab[11]>=48)&&(ab[11]<=57)))&&((ab[12]==null)||((ab[12]>=48)&&(ab[12]<=57)))&&((ab[13]==null)||((ab[13]>=48)&&(ab[13]<=57)))&&((ab[14]==null)||((ab[14]>=48)&&(ab[14]<=57)))&&((ab[15]==null)||((ab[15]>=48)&&(ab[15]<=57)))&&((ab[16]==null)||((ab[16]>=48)&&(ab[16]<=57)))&&((ab[17]==null)||((ab[17]>=48)&&(ab[17]<=57)))) | |
| 120 | 101 | }}}}}} |
| 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 | 102 | 소수점 아래 자리에 입력한 부분이 문제가 있으면 오류코드 7번(소수점 아랫자리 오류)를 반환합니다. |
| 124 | 103 | {{{#!if !ts&&!br |
| 125 | 104 | {{{#!if br=true, ea=7 |
| 126 | 105 | }}}}}} |
| 127 | 106 | |
| 128 | 이와 같은 방법으로 b도 유효성 검사를 실행합니다. | |
| 107 | 이와 같은 방법으로 b도 bu를 tm으로 복제하는 과정을 포함하여 유효성 검사를 실행합니다. 오류코드는 동일합니다. | |
| 108 | {{{#!if ts&&!br | |
| 109 | {{{#!if ts=(bs.indexOf(".")==bs.lastIndexOf(".")) | |
| 110 | }}}}}}{{{#!if !ts&&!br | |
| 111 | {{{#!if br=true, eb=5 | |
| 112 | }}}}}} | |
| 113 | {{{#!if ts&&!br | |
| 114 | {{{#!if tm=bu | |
| 115 | }}}{{{#if tm[0]==45 | |
| 116 | {{{#!if tm=tm.substr(1,tm.length-1) | |
| 117 | }}}}}}{{{#!if ts=(tm.length<=18) | |
| 118 | }}}}}}{{{#!if !ts&&!br | |
| 119 | {{{#!if br=true, eb=1 | |
| 120 | }}}}}} | |
| 121 | {{{#!if ts&&!br | |
| 122 | {{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn) | |
| 123 | }}}}}}{{{#!if !ts&&!br | |
| 124 | {{{#!if br=true, eb=6 | |
| 125 | }}}}}} | |
| 126 | {{{#!if ts&&!br | |
| 127 | {{{#!if bb.length>=19 | |
| 128 | {{{#!if wb=1, bb=bb.substr(0,18), bp=18 | |
| 129 | }}}}}}{{{#!if ts=(((bb[0]==null)||((bb[0]>=48)&&(bb[0]<=57)))&&((bb[1]==null)||((bb[1]>=48)&&(bb[1]<=57)))&&((bb[2]==null)||((bb[2]>=48)&&(bb[2]<=57)))&&((bb[3]==null)||((bb[3]>=48)&&(bb[3]<=57)))&&((bb[4]==null)||((bb[4]>=48)&&(bb[4]<=57)))&&((bb[5]==null)||((bb[5]>=48)&&(bb[5]<=57)))&&((bb[6]==null)||((bb[6]>=48)&&(bb[6]<=57)))&&((bb[7]==null)||((bb[7]>=48)&&(bb[7]<=57)))&&((bb[8]==null)||((bb[8]>=48)&&(bb[8]<=57)))&&((bb[9]==null)||((bb[9]>=48)&&(bb[9]<=57)))&&((bb[10]==null)||((bb[10]>=48)&&(bb[10]<=57)))&&((bb[11]==null)||((bb[11]>=48)&&(bb[11]<=57)))&&((bb[12]==null)||((bb[12]>=48)&&(bb[12]<=57)))&&((bb[13]==null)||((bb[13]>=48)&&(bb[13]<=57)))&&((bb[14]==null)||((bb[14]>=48)&&(bb[14]<=57)))&&((bb[15]==null)||((bb[15]>=48)&&(bb[15]<=57)))&&((bb[16]==null)||((bb[16]>=48)&&(bb[16]<=57)))&&((bb[17]==null)||((bb[17]>=48)&&(bb[17]<=57)))) | |
| 130 | }}}}}}{{{#!if !ts&&!br | |
| 131 | {{{#!if br=true, eb=7 | |
| 132 | }}}}}} | |
| 129 | 133 | |
| 130 | }}} | |
| 131 | error code 05 번 ~ : 입력한 변수는 숫자로 읽을 수 없습니다. | |
| 132 | * 5번 : 반점(,)을 입력했다면 반점을 지우고 다시 입력하세요. | |
| 133 | ||
| 134 | error code 03 번 : 0으로 나눌 수 없습니다.(아래쪽 참고) | |
| 135 | ||
| 136 | 134 | ##== 2차 초기화 == |
| 137 | 135 | 입력한 소수점 아래에 입력한 값을 정리합니다. 이에 따라 ap, bp값도 다시 조정됩니다. |
| 138 | 136 | {{{#!if ap>9, ab.substr(ap-9,9)=="000000000" |
| ... | ... |