2011. 6. 1. 18:53

형 변환 / 데이터 변환

형 변환이란 서로 다른 데이터형 간에 변환이 필요할 경우 데이터형이 바뀌는 것을 말 합니다.
C#에서 형 변환은 암시적(Implicit) 형 변환과 명시적(explicit) 형 변환 두가지로 나눕니다.

형 변환은 서로 다른 데이터형을 갖는 변수에 값을 넣는 과정에서 발생하는 변환입니다.

숫자형 변환을 예로 들어봅시다, 작은 범위 숫자를 큰 범위에 할당하는 경우는 값 변화가 없이 할당이 가능하므로 암시적
형 변환이 일어 납니다. 반면  큰 범위 숫자를 작언 범위에 할달하는 경우는 값이 변할 수 있으므로 명시적 형 변환이 일어 납니다.


숫자계산
정수형과 실수형 사이에서 계산할 때 주의할 점입니다. 다음과 같이 계산했을때, 결과 값으로 1을 기대했다면 맞습니다.

int x=3, y=2;
int z= x/y;  //1

만약 1.5 값을 기대했다면, 다음과 같이 정수형을 double 형으로 변환해서 계산해주어야 올바른 결과 값을 구할수 있습니다.

double z = (double)x/(double)y;         // 1.5


* 데이터 변환

   

     string s = "1234";
        Response.Write("string : '" + s + "'<br>");

        //정수 문자열을 숫자로 변환
        Response.Write("Int16: " + Convert.ToInt16(s) + "<br>");
        Response.Write("double: " + Convert.ToDouble(s) + "<br>");

        s = "1234.56789000";
        Response.Write("string : '" + s + "'<br>");

        //실수 문자열을 숫자로 변환.
        Response.Write("single : " + Convert.ToSingle(s) + "<br>");
        Response.Write("doblue : " + Convert.ToDouble(s) + "<br>");   

string : '1234'
Int16: 1234
double: 1234
string : '1234.56789000'
single : 1234.568
doblue : 1234.56789

        DateTime Cur = DateTime.Now;

        // 날짜 출력       
        Response.Write("<br>Date : " + Cur.ToShortDateString());
        Response.Write("<br>Date : " + Cur.ToLongDateString());

        // 시간 출력   
        Response.Write("<br>Time : " + Cur.ToShortTimeString());
        Response.Write("<br>Time : " + Cur.ToLongTimeString());


Date : 2011-06-01
Date : 2011년 6월 1일 수요일
Time : 오후 5:38
Time : 오후 5:38:41  

  

      DateTime Cur = DateTime.Now;
        // 날짜 출력       
        Response.Write("<br>ToString() : " + Cur.ToString());
        Response.Write("<br>Date : " + Cur.ToString("yyyy년 MM월 dd일"));
        Response.Write("<br>Time : " + Cur.ToString("hh 시 mm 분"));   

 
ToString() : 2011-06-01 오후 5:41:59
Date : 2011년 06월 01일
Time : 05 시 41 분                         


* try/catch
오류가 발생할 경우, try/catch 문을 사용해서 예외 처리 합니다. 경우에 따라 다르겠지만 catch 문에서 디폴트 값을 넣거나 오류 메시지로 이동하게 합니다.


         int number = Convert.ToInt32("1234f");
         Response.Write("데이터 변환 오류 발생");

 입력 문자열의 형식이 잘못되었습니다.

        try
        {
            int number = Convert.ToInt32("1234f");
        }
        catch
        {
            Response.Write("데이터 변환 오류 발생");
        }