[C#] 데이터 형식 바꾸기

Flaming Bun·2025년 4월 28일

C#

목록 보기
19/35

참고 서적 : 이것이 C# 이다(저자: 박상현)

🔥 데이터 형식 바꾸기

1) 크기가 서로 다른 정수형식 사이의 변환

큰 정수 형식 변수에서 작은 정수 형식 변수로 옮길 때 오버플로가 발생한다.

[큰 정수 -> 작은 정수] 예시

long big = 5000000000; // 50억
int small = (int)big;
Console.WriteLine(small); // 705032704 - 약 43억 손실

2) 크기가 서로 다른 부동 소수점 형식 사이의 변화

부동 소수점 형식 특성상 오버플로가 존재하지 않지만 정밀성이 손상된다.

왜냐하면, float이나 double은 소수를 2진수 메모리에 보관하고 이것을 다른 형식으로 변환하려면 10진수로 복원한 후 다시 2진수로 변환 후 기록한다.

문제는 2진수로 표현하는 소수가 완전하지 않다.

예를들어 131\over3 같은 수는 무한소수다.

일반적으로 부동 소수점 숫자에는 정확히 일치하는 이진 표현이 없기 때문에 컴퓨터는 해당 숫자의 근사값을 저장하므로 float을 10진수로 변환 후 double로 변환하면 정확한 값이 아닌 다른 근사값을 저장한다.

[float -> double] 예시

float f = 0.3f;
double d = f;
Console.WriteLine(d); // 0.30000001192092896

3) 부호있는 정수 형식과 부호 없는 정수 형식 사이의 변환

언더 플로가 발생한다.

[부호 있는 정수 -> 부호 없는 정수] 예시

int x = -30;
uint y = (uint)x; // y = 4294967266

4) 부동 소수점 형식과 정수 형식 사이의 변환

[실수 -> 정수] 예시

float a = 0.9f;
int b = (int) a; // 소수점 아래 버림 -> b=0

float c = 1.1f;
int d = (int) c; // 소수점 아래 버림 -> d=1

5) 문자열을 숫자로, 숫자를 문자열로

[문자열 -> 숫자 / 숫자 -> 문자열] 예시

int a = int.parse("12345");
float b = float.Parse("123.45"); // 문자열 -> 숫자


// C#에서 숫자 데이터 형식은 문자열로 변환할 수 있게 
// object에서 물려받은 ToString() 메서드를 재정의 했다.

int c = 12345;
string d = c.ToString(); // 숫자 -> 문자열

float e = 123.45;
string f = e.ToString();

0개의 댓글