Language/C#

C# 공부정리 - 데이터 3 (형 변환)

Tarel 2022. 12. 29. 20:49

데이터 종류에 대해 알았다면

이제는 데이터의 형태를 바꿔보자

정수를 실수로, 실수를 정수로 바꾸거나 문자열을 숫자로 바꾸는 등의 변환을 알아보자

 

정수형 간의 변환

int를 double로 변환

int a = 100;
double b = (double)a;
double c = a;

int a를 선언하고 그것을 double로 변환한 것이다.

그런데 int는 double보다 포함하는 범위가 작다.

때문에 바로 아랫 줄 처럼 double을 생략해도 된다.

 

그렇다면, 큰 수를 작은 데이터형에 담으면 어떻게 될까?

double a = 12345678912;
int b = (int)a;

큰 수를 작은 자료형에 담을 때는 보시다시피 (int)를 써 주어야 한다.

단, 지금 a 의 값은 int의 최대값을 넘는 숫자를 가지고 있기 때문에 오버 플로우가 발생하고

b를 출력해보면 -2147483648 이라는 이상한 숫자가 나오는 것을 알 수 있다.

 

 

 

ToString()

숫자를 문자열로 바꾸는 명령이다.

int a = 100;
float b = 3.141593f;
decimal c = 3.1415926535897932384626433832m;

string strA = a.ToString();
string strB = b.ToString();
string strC = c.ToString();

이렇게 ToString을 사용해주면 숫자가 문자열로 바뀐다.

만약 ToString을 사용하지 않으면 에러가 난다.

 

 

Parse()

문자열을 숫자로 바꾸는 명령이다.

string strA = "100";
string strB = "3.141593";
string strC = "3.1415926535897932384626433832";

int parseA = int.Parse(strA);
float parseB = float.Parse(strB);
decimal parseC = decimal.Parse(strC);

만약 문자열에 숫자가 아닌 문자를 넣고 변환할 경우, 에러가 발생한다.

 

Convert

convert도 parse와 비슷하나 사용방법이 조금 다르다

 

int a = 100;
float b = 3.141593f;
decimal c = 3.1415926535897932384626433832m;

string strA = a.ToString();
string strB = b.ToString();
string strC = c.ToString();

int parseA = int.Parse(strA);
float parseB = float.Parse(strB);
decimal parseC = decimal.Parse(strC);

int convertA = Convert.ToInt32(strA);
float convertB = Convert.ToSingle(strB);
decimal convertC = Convert.ToDecimal(strC);