728x90
반응형
- 크기가 서로 다른 정수 형식 사이의 변환(int -> sbyte, sbyte -> int)
대상의 용량보다 큰 경우 오버플로우 발생
예제 프로그램
sbyte a = 127;
int b = (int)a;
int x = 128;
sbyte y = (sbyte)x;
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(x);
Console.WriteLine(y);
- 크기가 서로 다른 부동 소수점 형식 사이의 변환(float -> double, double -> float)
2진수로 된 데이터를 10진수로 복원후 2진수로 변환하기 때문에 완벽하지 않음
예제 프로그램
float a = 69.6875f;
Console.WriteLine($"a : {a}\n");
double b = (double)a;
Console.WriteLine($"b : {b}");
Console.WriteLine($"69.6875 == b : {69.6875 == b}\n");
float c = (float)b;
Console.WriteLine($"c : {c}");
Console.WriteLine($"a == c : {a == c}");
Console.WriteLine($"b == c : {b == c}\n");
float d = 0.1f;//2진수로 변환하여 기록하는 도중 완벽하지 않다.
Console.WriteLine($"d : {d}");
Console.WriteLine($"0.1 == d : {0.1 == d}\n");
double e = (double)d;
Console.WriteLine($"e : {e}");
Console.WriteLine($"0.1 == e : {0.1 == e}");
Console.WriteLine($"d == e : {d == e}\n");
double f = (int)(d * 10) * 0.1;
Console.WriteLine($"f : {f}");
Console.WriteLine($"0.1 == f : {0.1 == f}");
Console.WriteLine($"d == f : {d == f}");
Console.WriteLine($"e == f : {e == f}\n");
float g = (float)e;
Console.WriteLine($"g : {g}");
Console.WriteLine($"0.1 == g : {0.1 == g}");
Console.WriteLine($"d == g : {d == g}");
Console.WriteLine($"e == g : {e == g}");
Console.WriteLine($"f == g : {f == g}\n");
g: 데이터의 형식으로 인해 표면상에서 데이터의 뒷부분이 안 보이기 때문(개인적 생각입니다, 틀렸으면 댓글 부탁드립니다)
- 부호 있는 정수 형식과 부호 없는 정수 형식 사이의 변환(int -> uint, uint -> int)
변환 도중 오버플로우와 언더플로우가 발생할 수 있음
예제 프로그램
int a = 500;
Console.WriteLine(a);
uint b = (uint)a;
Console.WriteLine(b);
int c = (int)b;
Console.WriteLine(c);
int x = -30;
Console.WriteLine(x);
uint y = (uint)x;
Console.WriteLine(y);
int z = (int)y;
Console.WriteLine(z);
- 부동 소수점 형식과 정수 형식 사이의 변환(float -> int, int -> float)
정수 형식으로 변환할 때 소수점을 버리고 소수점 위의 값만 남김
예제 프로그램
float a = 0.9f;
int b = (int)a;
float c = (float)b;
Console.WriteLine($"a : {a}");
Console.WriteLine($"b : {b}");
Console.WriteLine($"c : {c}\n");
float d = 1.1f;
int e = (int)c;
float f = (float)e;
Console.WriteLine($"d : {d}");
Console.WriteLine($"e : {e}");
Console.WriteLine($"f : {f}");
- 문자열 -> 숫자, 숫자 -> 문자열
- 문자열 -> 숫자: int/double/float.Parse(문자열), Convert.ToInt/ToDouble/ToByte(문자열)등 사용
- 숫자 -> 문자열: (변수명).ToString() 사용
예제 프로그램
int a = 123;
string b = a.ToString();
Console.WriteLine(b + "\n");
float c = 3.14f;
string d = c.ToString();
Console.WriteLine(d + "\n");
string e = "123456";
int f = Convert.ToInt32(e);
int g = int.Parse(e);
Console.WriteLine(f + ", " + g + $", {f}, " + "{0}\n", g);
string h = "1.2345";
float i = float.Parse(h);
double j = Convert.ToDouble(h);
Console.WriteLine(i);
Console.WriteLine(j + "\n");
char k = 'a';
string l = char.ToString(k);
char m = Convert.ToChar(l);
Console.WriteLine(l);
Console.WriteLine(m);
ps. 어떤 형식의 코드를 사용할 것인지는 프로그래머의 마음입니다. 사용해 봤을 때 편한 방식을 사용하세요.
728x90
반응형
'C#' 카테고리의 다른 글
[C#] Nullable 형식 (0) | 2023.06.08 |
---|---|
[C#] 상수, 열거 형식 (0) | 2023.06.08 |
[C#] object 형식 (0) | 2023.06.07 |
[C#] 논리 형식 (0) | 2023.05.26 |
[C#] 문자/문자열 형식 (6) | 2023.05.26 |