C# 숫자 타입과 float 면접 질문 및 답변
C# 숫자 타입과 float
1. 숫자 타입 기초
Q1. C#의 숫자 타입은 어떻게 구분하나요?
A. 숫자 타입은 정수형과 실수형으로 구분합니다. 정수형은 소수점이 없는 숫자를 저장하고, 실수형은 소수점이 있는 숫자를 저장합니다.
Q2. 정수형은 어떻게 구분하나요?
A. 부호가 있는 정수형과 부호가 없는 정수형으로 구분합니다. 부호가 있는 정수형은 음수와 양수를 모두 저장하고, 부호가 없는 정수형은 0과 양수만 저장합니다.
Q3. 정수형에는 어떤 타입이 있나요?
A. 부호가 있는 정수형은 sbyte, short, int, long이 있으며, 부호가 없는 정수형은 byte, ushort, uint, ulong이 있습니다.
Q4. 정수형의 범위는 무엇으로 결정되나요?
A. 정수형의 범위는 비트 수로 결정됩니다. 비트 수가 많을수록 더 큰 범위의 숫자를 저장할 수 있습니다.
Q5. 부호 없는 정수형의 최댓값은 어떻게 계산하나요?
A. 비트 수를 n이라고 할 때 2ⁿ - 1로 계산합니다. 예를 들어 8비트인 byte는 0부터 255까지 저장할 수 있습니다.
Q6. 부호 있는 정수형은 왜 음수 범위가 1만큼 더 넓나요?
A. 0이 양수 쪽에 포함되기 때문입니다. 따라서 음수 범위가 양수 범위보다 1만큼 더 넓습니다.
Q7. MinValue와 MaxValue는 무엇인가요?
A. 숫자 타입이 저장할 수 있는 최솟값과 최댓값을 나타냅니다. 이를 사용하면 타입의 범위를 직접 확인할 수 있습니다.
2. 정수형의 오버플로와 타입 선택
Q1. 오버플로(Overflow)란 무엇인가요?
A. 정수 계산 결과가 해당 타입의 최댓값이나 최솟값을 벗어나는 현상입니다.
Q2. 오버플로가 발생하면 어떤 일이 생기나요?
A. 오버플로 검사를 하지 않는 설정에서는 값이 반대쪽 범위로 돌아갑니다. 오류 메시지가 나타나지 않고 값이 잘못 저장될 수 있습니다.
Q3. 정수형은 어떤 기준으로 선택하나요?
A. 일반적인 정수는 int를 기본으로 사용합니다. 21억을 넘을 수 있는 값은 long을 사용하고, 0부터 255까지의 값은 byte를 사용합니다.
Q4. short나 sbyte를 메모리 절약 목적으로 사용하는 것이 좋은가요?
A. 대부분의 경우 그렇지 않습니다. 좁은 타입을 사용한다고 계산이 더 빨라지는 것은 아니며, 오버플로 위험이 커질 수 있습니다.
3. 실수 타입 기초
Q1. C#의 실수 타입에는 어떤 종류가 있나요?
A. float, double, decimal 세 가지가 있습니다. 각각 메모리 크기와 정밀도, 주요 용도가 다릅니다.
Q2. float의 특징은 무엇인가요?
A. 32비트 실수형으로 메모리를 적게 사용하지만 정밀도가 낮습니다. 리터럴에 접미사 f를 붙여야 합니다.
Q3. double의 특징은 무엇인가요?
A. 64비트 실수형으로 float보다 정밀도가 높습니다. C#에서 실수의 기본 타입이므로 접미사를 생략할 수 있습니다.
Q4. decimal의 특징은 무엇인가요?
A. 128비트 실수형으로 정확한 10진수 계산에 사용합니다. 리터럴에 접미사 m을 붙여야 합니다.
Q5. 세 가지 실수 타입은 어떤 상황에서 사용하나요?
A. 게임의 좌표와 속도에는 float, 과학·공학 계산에는 double, 돈과 세금 등의 금융 계산에는 decimal을 사용합니다.
4. 부동 소수점과 정밀도
Q1. 부동 소수점(Floating Point)이란 무엇인가요?
A. 소수점의 위치가 고정되지 않고 이동하는 방식으로 실수를 저장하는 방법입니다. float와 double이 이 방식을 사용합니다.
Q2. IEEE 754란 무엇인가요?
A. 부동 소수점 숫자를 표현하는 국제 표준입니다. 실수를 부호, 지수, 가수 세 부분으로 나누어 저장합니다.
Q3. 부호, 지수, 가수는 각각 어떤 역할을 하나요?
A.
- 부호: 숫자가 양수인지 음수인지 나타냅니다.
- 지수: 소수점을 몇 칸 이동할지 나타내며 값의 범위를 결정합니다.
- 가수: 유효 숫자를 저장하며 값의 정밀도를 결정합니다.
Q4. float와 double은 왜 0.1을 정확하게 저장하지 못하나요?
A. 10진수 0.1을 2진수로 변환하면 끝없이 반복되는 소수가 됩니다. 저장할 수 있는 비트 수는 제한되어 있으므로 일부를 잘라 저장하고, 이 과정에서 작은 오차가 발생합니다.
Q5. 0.1 + 0.2 == 0.3의 결과가 False인 이유는 무엇인가요?
A. float와 double은 10진 소수를 정확하게 표현하지 못하기 때문에 계산 과정에서 미세한 오차가 발생합니다. 따라서 눈으로는 같은 값처럼 보여도 실제 저장된 값은 다를 수 있습니다.
Q6. 실수를 ==로 비교하지 않는 이유는 무엇인가요?
A. 부동 소수점 오차로 인해 실제로는 거의 같은 값이어도 정확히 일치하지 않을 수 있기 때문입니다. 두 값의 차이가 충분히 작은지 확인하는 방식으로 비교합니다.
Q7. decimal은 왜 0.1을 정확하게 표현할 수 있나요?
A. 정수 계수와 10의 거듭제곱을 이용해 십진 소수를 표현하기 때문입니다. 다만 저장할 수 있는 범위와 자릿수에는 한계가 있으며, 나눗셈 등의 계산에서는 반올림 오차가 발생할 수 있습니다.
5. 게임에서 float를 사용하는 이유
Q1. 게임에서 float를 기본으로 사용하는 이유는 무엇인가요?
A. 메모리 사용량과 계산 속도, 필요한 정밀도를 고려했을 때 적합하기 때문입니다.
Q2. 게임에서 float를 사용하면 어떤 장점이 있나요?
A.
- 메모리:
double보다 적은 메모리를 사용합니다. - 속도: 그래픽 카드가 32비트 실수를 기준으로 설계되어 있습니다.
- 정밀도: 게임의 좌표와 속도 등을 표현하기에 충분한 정밀도를 제공합니다.
Q3. float의 약 7자리 정밀도는 소수점 아래 7자리를 의미하나요?
A. 아닙니다. 약 7자리는 유효 숫자를 의미하며, 소수점 아래 7자리를 보장한다는 뜻은 아닙니다. 좌표가 커질수록 표현할 수 있는 값 사이의 간격도 커집니다.
6. C# 키워드와 .NET 타입
Q1. C# 키워드와 .NET 타입은 어떤 관계인가요?
A. int, double, bool과 같은 C# 키워드는 .NET 타입의 별칭입니다. 서로 완전히 같은 타입이므로 어떤 이름을 사용해도 동일하게 동작합니다.
Q2. int와 System.Int32는 어떤 차이가 있나요?
A. 이름만 다를 뿐 같은 타입입니다. int.MaxValue와 Int32.MaxValue도 동일한 값을 나타냅니다.
Q3. 변수를 선언할 때는 어떤 이름을 사용하는 것이 일반적인가요?
A. int, string과 같은 C# 키워드를 사용하는 것이 일반적입니다.
7. Math 클래스
Q1. Math 클래스란 무엇인가요?
A. 수학 계산에 필요한 상수와 기능을 모아 둔 클래스입니다. 절댓값, 최댓값, 최솟값, 반올림, 제곱근 등의 기능을 제공합니다.
Q2. Math.PI와 Math.E는 무엇인가요?
A. Math.PI는 원주율을 나타내고, Math.E는 자연 로그의 밑을 나타내는 상수입니다.
Q3. Math.Abs()는 어떤 기능을 하나요?
A. 숫자의 절댓값을 반환합니다. 음수의 부호를 제거할 때 사용합니다.
Q4. Math.Max()와 Math.Min()은 어떤 기능을 하나요?
A. Math.Max()는 두 값 중 큰 값을 반환하고, Math.Min()은 두 값 중 작은 값을 반환합니다.
Q5. Math.Clamp()는 어떤 기능을 하나요?
A. 값을 지정된 최솟값과 최댓값 사이로 제한합니다. 체력이나 수치가 정해진 범위를 벗어나지 않도록 할 때 사용합니다.
Q6. Math.Pow()와 Math.Sqrt()는 어떤 기능을 하나요?
A. Math.Pow()는 거듭제곱을 계산하고, Math.Sqrt()는 제곱근을 계산합니다.
Q7. Math.Round(), Math.Ceiling(), Math.Floor()는 어떤 차이가 있나요?
A.
Math.Round(): 반올림합니다.Math.Ceiling(): 올림합니다.Math.Floor(): 내림합니다.
Q8. Math.Round()의 기본 반올림 방식은 무엇인가요?
A. 중간값이 0.5인 경우 가까운 짝수 쪽으로 반올림합니다. 이를 은행가 반올림이라고 합니다.
Q9. 일반적인 반올림 방식을 사용하려면 어떻게 해야 하나요?
A. MidpointRounding.AwayFromZero를 지정하면 0에서 멀어지는 방향으로 반올림합니다.
Q10. 삼각 함수의 인수는 어떤 단위를 사용하나요?
A. 라디안 단위를 사용합니다. 각도를 라디안으로 변환하려면 각도에 π / 180을 곱합니다.
면접 전 핵심 정리
- 정수형은 부호 있는 타입 4가지와 부호 없는 타입 4가지로 구분합니다.
- 정수형의 범위는 비트 수로 결정됩니다.
MinValue와MaxValue로 타입의 최솟값과 최댓값을 확인할 수 있습니다.- 오버플로는 저장 범위를 벗어나는 계산으로, 값이 잘못 저장될 수 있습니다.
- 일반적인 정수는
int, 큰 정수는long, 0~255 범위는byte를 사용합니다. - 실수형은
float,double,decimal세 가지입니다. float는 32비트,double은 64비트,decimal은 128비트입니다.float는f,decimal은m접미사를 붙입니다.double은 기본 실수 타입입니다.float와double은 부동 소수점 방식으로 저장하므로 10진 소수를 정확하게 표현하지 못할 수 있습니다.- 실수 비교는
==보다 두 값의 차이가 충분히 작은지 확인하는 방식이 적합합니다. - 돈 계산에는
decimal, 과학·공학 계산에는double, 게임의 좌표와 속도에는float를 사용합니다. - C# 키워드는 .NET 타입의 별칭입니다.
Math클래스는 수학 계산에 필요한 상수와 기능을 제공합니다.Math.Round()의 기본 반올림 방식은 가까운 짝수 쪽으로 반올림하는 방식입니다.



