C 기본 문법 – 기본 데이터 타입 – 1편: 실수형 완벽 이해하기
안녕하세요, 열정 가득한 C 언어 학습자 여러분! 😊
이번 시간에는 지난 정수형에 이어서 **실수형(Floating Point Type)**에 대해 자세히 알아보겠습니다.
숫자에도 소수점이 있는 숫자와 없는 숫자가 있죠?
정수형이 ‘딱 떨어지는 수’라면, 실수형은 **’사이사이의 미세한 수까지 담을 수 있는 그릇’**이에요.
예를 들어 3.14, -0.001, 2.71828 같은 수를 다루려면 실수형이 필요하답니다!
그럼 지금부터 실수형의 모든 것을 하나씩 짚어볼게요 🧪
실수형이란?
실수형은 소수점을 포함한 숫자를 저장하기 위한 자료형입니다.
즉, 정밀한 수치 계산, 과학적 계산, 통계 연산 등에 필수로 쓰이는 데이터 타입이에요!
C 언어의 실수형 종류
자료형 | 크기(바이트) | 유효 자릿수 | 사용 예 |
---|---|---|---|
float |
4 byte | 약 6~7자리 | 메모리 절약형, 빠른 연산 |
double |
8 byte | 약 15~16자리 | 기본 실수형, 정밀한 계산 |
long double |
8~16 byte | 시스템에 따라 다름 | 고정밀 수치 계산용 |
💡 대부분의 경우
double
을 기본으로 사용합니다.
왜냐하면float
보다 정밀하고,long double
보다 널리 호환되기 때문이죠.
코드 예제로 보는 실수형의 사용법
#include <stdio.h>
int main() {
float f = 3.141592f; // float은 반드시 접미사 f 붙이기!
double d = 3.14159265358979;
long double ld = 3.141592653589793238L;
printf("float: %.7f
", f);
printf("double: %.15lf
", d);
printf("long double: %.18Lf
", ld);
return 0;
}
출력 결과 예시
float: 3.1415920
double: 3.141592653589790
long double: 3.141592653589793238
🎯
%.nf
또는%.nLf
는 소수점 아래 n자리까지 출력하라는 의미예요!
왜 실수형마다 자릿수가 다를까요?
컴퓨터는 숫자를 2진법으로 표현하기 때문에,
소수점 아래 숫자를 완벽하게 표현하는 데 한계가 있어요.
따라서 정밀도가 자료형마다 다르게 정해져 있답니다!
🎯 비유하자면,
float
은 “작은 컵”,double
은 “보통 컵”,long double
은 “와인잔” 같아요.
담을 수 있는 물(숫자)의 양이 점점 커지는 거죠!
실수형 변수의 초기화 방식
float a = 3.0f; // float는 f 접미사 필수!
double b = 3.0; // double은 접미사 없이도 됨
long double c = 3.0L; // long double은 L 사용
자료형 | 리터럴 예시 |
---|---|
float | 1.23f , 0.0f |
double | 1.23 , 3.14 |
long double | 1.23L , 6.283L |
실수형 변수와 출력 서식
자료형 | 서식 지정자 |
---|---|
float |
%f |
double |
%lf (C99부터 %f 도 가능) |
long double |
%Lf |
printf("실수: %.2f
", 3.14159); // 소수점 둘째 자리까지 출력
실수 연산 주의사항
💥 실수형은 정확하지 않을 수 있어요!
#include <stdio.h>
int main() {
float a = 0.1f;
if (a == 0.1) {
printf("같다!
");
} else {
printf("다르다!
");
}
return 0;
}
출력: 다르다!
왜 그럴까요?
a
는float
이고,0.1
은double
로 처리됩니다.- 내부 이진 표현의 차이로 인해 오차가 발생하기 때문에, 실수 비교는 주의가 필요해요!
실수형 비교 방법
#include <math.h>
int main() {
double a = 0.1;
double b = 1.0 / 10;
if (fabs(a - b) < 1e-9) {
printf("거의 같다!
");
} else {
printf("다르다!
");
}
}
💡
fabs()
는 실수의 절댓값을 구하는 함수입니다.
두 수의 차이가 아주 작으면 같다고 판단하는 방식이에요.
실수형 활용 예시
📐 원의 넓이 구하기
#include <stdio.h>
int main() {
double radius = 5.0;
double area = 3.14159 * radius * radius;
printf("반지름 %.2f인 원의 넓이: %.4f
", radius, area);
return 0;
}
결과:
반지름 5.00인 원의 넓이: 78.5398
✅ 정리: 실수형 한눈에 보기
타입 | 크기 | 유효 자릿수 | 접미사 | 서식 지정자 |
---|---|---|---|---|
float |
4B | 약 7자리 | f |
%f |
double |
8B | 약 15자리 | (없음) | %lf |
long double |
8~16B | 18자리 이상 | L |
%Lf |
⚠️ 실수형 사용할 때 주의할 점
주의사항 | 설명 |
---|---|
실수 비교는 직접 비교 금지 | 작은 오차로 == 결과가 달라질 수 있어요 |
반드시 f, L 접미사 사용 | float과 long double에는 리터럴 접미사 필요 |
연산 순서와 정밀도에 민감 | 계산 순서에 따라 결과가 달라질 수 있어요 |
반복 누적 연산은 오차 증가 | 많은 덧셈은 오차를 키우니 정렬이나 보정 필요 |
정수 → 실수 변환 주의 | 암묵적 형변환 시 타입 충돌에 주의해야 해요 |
마무리하며 💬
실수형은 우리가 정밀한 계산을 하고 싶을 때 꼭 필요한 데이터 타입이에요.
하지만 컴퓨터에서의 실수는 완벽하지 않기 때문에, 항상 오차 범위와 형변환을 고려하며 써야 해요.
다음 편에서는 문자형(char) 데이터 타입을 알아보면서
문자와 아스키코드, 그리고 문자열의 기초로 넘어가볼게요!
늘 응원하며, 코딩의 즐거움이 가득하길 바랍니다 😊
감사합니다!