ClassicASP 문자열 값을 숫자 값으로 변환하는 함수 / 숫자 서브 타입 관련
페이지 정보
본문
1. CInt, CLng
CInt 와 CLng 함수는 숫자형으로 변환하는 함수 중에 가장 많이 쓰이는 함수입니다. Int는 정수형(Integer), CLng 는 긴 정수형(Long)의 값으로 변환시켜 주는 함수지요.
예를 들자면 다음과 같습니다.
DIM intFirst, intSecond, intPlus
intFirst = "200"
intSecond = "400"
intPlus = intFirst + intSecond
이 경우 intPlus 의 값은 600 이 아닌 "200400" 이 된다는 말씀을 지난 강좌에서 드렸지요? 200 과 400 의 앞뒤에 큰 따옴표가 있기 때문에 문자열 서브 타입이 되기 때문입니다.) 이것을 CInt 함수를 써서 변환시키면 어떻게 될까요?
intFirst = CInt ("200")
intSecond = CInt ("400")
intPlus = intFirst + intSecond
이제 intPlus 에는 우리가 원하던대로 600 이라는 값이 들어가게 됩니다. 이처럼 CInt 는 인자로 들어온 값을 '숫자 서브 타입' 으로 변경해주는 함수입니다.
그런데 만약 intSecond = CInt ("50000") 와 같이 사용하면 어떻게 될까요? 네.. 이 경우에는 '오버플로' 라는 오류를 만나게 됩니다.
예) CInt("5000")
Microsoft VBScript runtime 오류 '800a0006'
Overflow: 'CInt'
정수형(Integer)의 한계치인 32,767 을 넘어갔기 때문이지요. 이때에는 CLng 를 사용하여 intSecond = CLng ("50000") 과 같이 사용하시면 되겠습니다.
그리고 CInt 와 CLng 는 정수형 타입이므로 소수점을 포함한 숫자가 인자로 들어온다면 '반올림한 정수' 를 돌려준다는 사실을 추가적으로 기억해 주시기 바랍니다. (한가지 재미있는 규칙은.. 정확하게 절반인 경우에는 가장 가까운 짝수를 반환합니다. 즉 CInt (0.5) 인 경우에는 0을, CInt (1.5) 인 경우에는 1을 반환한다는 것이지요.)
또한, 주의하실 점을 한가지 알려드리자면.. CInt 나 CLng 에 '숫자로 변환할 수 없는 값' 을 넣는다면 오류가 발생한다는 것입니다. (예를 들어 CInt ("abc") 나 CInt ("오십삼") 처럼은 사용하실 수 없다는 뜻이지요.)
예1) CInt("aaa")
Microsoft VBScript runtime 오류 '800a000d'
Type mismatch: 'CInt'
예2) Cint(aaa)
Microsoft VBScript runtime 오류 '800a01ca'
Variable uses an Automation type not supported in VBScript: 'CInt'
2. CByte, CSng, CDbl, CCur
그렇다면 이제 CByte와 CSng, CDbl, CCur 등의 함수의 용도도 대충 짐작이 가시겠지요? CByte 는 CInt 와 마찬가지로 정수 값을 반환해 줍니다. (반올림 규칙도 일치합니다.) 하지만 변환된 값이 0 ~ 255 사이의 값이 아니라면 오류가 발생합니다.
CSng 와 CDbl 도 각각 Single, Double 형의 값을 반환해 주는데요. 예를 들어서 다음 두 변수에 같은 값을 인자로 주었다고 가정해 보겠습니다.
intFirst = CSng ("12345.54321")
intSecond = CDbl ("12345.54321")
이때 intFirst 값은 12345.54, intSecond 값은 12345.54321 으로 나타나게 됩니다. (결과 자체보다는.. CSng 보다 CDbl 이 정밀하다는 사실을 기억해두시기 바랍니다.)
CCur 역시 CSng, CDbl 과 마찬가지이지만 '통화' 용도로 사용된다는 설명을 드렸었지요? CCur 은 특이하게도 소수점 5자리에서 반올림을 하게 됩니다. 즉, CCur ("12345.54321") 이라고 한다면 12345.5432 라는 값이 반환되는 것이지요.
3. Fix, Int, Abs
Fix 와 Int 는 모두 '잘라내기를 통해 숫자의 정수 부분을 반환' 하는 함수입니다. 즉 Fix (9.8) 이나 Int (9.8) 모두 똑같이 9 라는 값을 반환한다는 뜻이지요. 그렇다면 이 두 함수의 차이는 무엇일까요? 그것은 바로 음수의 처리에 있습니다. 쉽게 말씀드리자면 Fix (-9.8) 은 -9를, Int (-9.8) 은 -10을 반환한다는 의미인 것입니다. (즉, Fix 는 소수점 이하 숫자를 없애버리는 것이고, Int 는 '내림' 을 하는 것이지요.)
Abs 는 수학에서 많이 쓰이는 함수인데요.. 절대값을 반환합니다. 즉 Abs (-3.5) 나 Abs (3.5) 모두 3.5 라는 값을 반환하게 되지요.
자료출처
http://taeyo.net/columns/View.aspx?SEQ=152&PSEQ=12&IDX=6
CInt 와 CLng 함수는 숫자형으로 변환하는 함수 중에 가장 많이 쓰이는 함수입니다. Int는 정수형(Integer), CLng 는 긴 정수형(Long)의 값으로 변환시켜 주는 함수지요.
예를 들자면 다음과 같습니다.
DIM intFirst, intSecond, intPlus
intFirst = "200"
intSecond = "400"
intPlus = intFirst + intSecond
이 경우 intPlus 의 값은 600 이 아닌 "200400" 이 된다는 말씀을 지난 강좌에서 드렸지요? 200 과 400 의 앞뒤에 큰 따옴표가 있기 때문에 문자열 서브 타입이 되기 때문입니다.) 이것을 CInt 함수를 써서 변환시키면 어떻게 될까요?
intFirst = CInt ("200")
intSecond = CInt ("400")
intPlus = intFirst + intSecond
이제 intPlus 에는 우리가 원하던대로 600 이라는 값이 들어가게 됩니다. 이처럼 CInt 는 인자로 들어온 값을 '숫자 서브 타입' 으로 변경해주는 함수입니다.
그런데 만약 intSecond = CInt ("50000") 와 같이 사용하면 어떻게 될까요? 네.. 이 경우에는 '오버플로' 라는 오류를 만나게 됩니다.
예) CInt("5000")
Microsoft VBScript runtime 오류 '800a0006'
Overflow: 'CInt'
정수형(Integer)의 한계치인 32,767 을 넘어갔기 때문이지요. 이때에는 CLng 를 사용하여 intSecond = CLng ("50000") 과 같이 사용하시면 되겠습니다.
그리고 CInt 와 CLng 는 정수형 타입이므로 소수점을 포함한 숫자가 인자로 들어온다면 '반올림한 정수' 를 돌려준다는 사실을 추가적으로 기억해 주시기 바랍니다. (한가지 재미있는 규칙은.. 정확하게 절반인 경우에는 가장 가까운 짝수를 반환합니다. 즉 CInt (0.5) 인 경우에는 0을, CInt (1.5) 인 경우에는 1을 반환한다는 것이지요.)
또한, 주의하실 점을 한가지 알려드리자면.. CInt 나 CLng 에 '숫자로 변환할 수 없는 값' 을 넣는다면 오류가 발생한다는 것입니다. (예를 들어 CInt ("abc") 나 CInt ("오십삼") 처럼은 사용하실 수 없다는 뜻이지요.)
예1) CInt("aaa")
Microsoft VBScript runtime 오류 '800a000d'
Type mismatch: 'CInt'
예2) Cint(aaa)
Microsoft VBScript runtime 오류 '800a01ca'
Variable uses an Automation type not supported in VBScript: 'CInt'
2. CByte, CSng, CDbl, CCur
그렇다면 이제 CByte와 CSng, CDbl, CCur 등의 함수의 용도도 대충 짐작이 가시겠지요? CByte 는 CInt 와 마찬가지로 정수 값을 반환해 줍니다. (반올림 규칙도 일치합니다.) 하지만 변환된 값이 0 ~ 255 사이의 값이 아니라면 오류가 발생합니다.
CSng 와 CDbl 도 각각 Single, Double 형의 값을 반환해 주는데요. 예를 들어서 다음 두 변수에 같은 값을 인자로 주었다고 가정해 보겠습니다.
intFirst = CSng ("12345.54321")
intSecond = CDbl ("12345.54321")
이때 intFirst 값은 12345.54, intSecond 값은 12345.54321 으로 나타나게 됩니다. (결과 자체보다는.. CSng 보다 CDbl 이 정밀하다는 사실을 기억해두시기 바랍니다.)
CCur 역시 CSng, CDbl 과 마찬가지이지만 '통화' 용도로 사용된다는 설명을 드렸었지요? CCur 은 특이하게도 소수점 5자리에서 반올림을 하게 됩니다. 즉, CCur ("12345.54321") 이라고 한다면 12345.5432 라는 값이 반환되는 것이지요.
3. Fix, Int, Abs
Fix 와 Int 는 모두 '잘라내기를 통해 숫자의 정수 부분을 반환' 하는 함수입니다. 즉 Fix (9.8) 이나 Int (9.8) 모두 똑같이 9 라는 값을 반환한다는 뜻이지요. 그렇다면 이 두 함수의 차이는 무엇일까요? 그것은 바로 음수의 처리에 있습니다. 쉽게 말씀드리자면 Fix (-9.8) 은 -9를, Int (-9.8) 은 -10을 반환한다는 의미인 것입니다. (즉, Fix 는 소수점 이하 숫자를 없애버리는 것이고, Int 는 '내림' 을 하는 것이지요.)
Abs 는 수학에서 많이 쓰이는 함수인데요.. 절대값을 반환합니다. 즉 Abs (-3.5) 나 Abs (3.5) 모두 3.5 라는 값을 반환하게 되지요.
자료출처
http://taeyo.net/columns/View.aspx?SEQ=152&PSEQ=12&IDX=6
댓글목록
등록된 댓글이 없습니다.