# 정수 자료형
C#에서 지원하는 자료형들의 범위와 size는 아래의 링크에서 확인이 가능하다
위에서 보다시피 음수가 포함된 자료형의 범위는
음수인 -256 ~ -1을 커버하고
0 및 양수인 0 ~ 255을 커버한다는 사실을 알 수 있다
0이 있기 때문에, 음수의 최소치와 양수의 최대치는 1의 크기 차이가 발생한다
# 실수 자료형
C#에서 지원하는 실수 자료형들의 범위와 size는 아래의 링크에서 확인이 가능하다
- float과 double
float과 double은 부동 소수점 방식으로
결국 정확한 값이 아닌 근사치로 활용이 된다
float은 약 7자리의 유효 숫자로 오차가 발생할 확률이 있다
double은 약 15-17자리의 유효 숫자로 float보다 훨씬 정밀해서 대부분의 과학 계산이나 공학 계산에서 충분하다
따라서, float보다는 double을 사용하는 것이 추천된다
double이 float보다 메모리를 더 사용하지만, 성능에 큰 영향을 주지 않는 경우가 많다
- decimal
그리고 만약, 금융 계산 등 소수점 오차가 절대 허용되지 않는 경우에는
decimal을 사용하면 된다
- 고정 소수점 연산
또한, 아주 정확한 연산이 필요하면서도 부동 소수점 연산을 사용할 수 없는 임베디드 시스템,
또는 매우 빠른 연산이 필요한 특정 게임 엔진 내부에서 수동으로
고정 소수점 연산을 구현하는 경우가 있다
# 실수 자료형 산술 연산
부동 소수점 실수 자료형인 float과 double에서
산술연산과 비교연산을 하는 경우 꼭 기억해야 할 부분은
'=='을 통해 같은지 확인하는 경우에 발생하는 문제이다
상식적으로 둘의 값이 같다고 생각할 수 있지만,
근사치기에 완전히 똑같은 값으로 판단하지 못하는 경우가 많다
그래서 epsilon을 직접 만들어 아래와 같이 같은지 확인해야 한다
float a = 0.1f + 0.2f; // 실제로는 0.300000012
float b = 0.3f; // 0.3
double epsilonDouble = 0.000000001; // double용 작은 오차 값
bool areDoublesApproximatelyEqual = Math.Abs(a - b) < epsilonDouble;
if (areDoublesApproximatelyEqual)
{
Debug.Log("a와 b는 거의 같습니다.");
}
유니티에서는 위의 불편함을 해결해 줄
Mathf.Approximate()를 이용하면 된다
float a = 0.1f + 0.2f; // 실제로는 0.300000012
float b = 0.3f; // 0.3
if (Mathf.Approximately(a, b))
{
Debug.Log("a와 b는 거의 같습니다.");
}
# var
var은 C++의 auto와 같다고 생각하면 된다
그리고 추론한 해당 타입은 컴파일타임에 결정이 된다
그렇기에 결정이 된 타입에 다른 타입 데이터를 넣는 것은 불가능하다
// csharp
var number = 10; // `int`로 추론됨
number = "Hello"; // 오류 (타입 고정)`
// cpp
auto number = 10; // `int`로 추론됨
number = "Hello"; // 오류 (타입 고정)`
'C# > [루키스] C#' 카테고리의 다른 글
[C# 섹션 5] 객체지향 - 객체의 복사와 참조 (0) | 2025.06.20 |
---|---|
[C# 섹션 3] 코드의 흐름 제어 (0) | 2025.06.19 |
[C# 섹션 2] 데이터 - 스트링포맷 (0) | 2025.06.19 |
[C# 섹션 2] 데이터 - 연산 (1) | 2025.06.18 |
[C# 섹션 1] 개론 (2) | 2025.06.18 |