정수와 실수 변환
정밀도 문제를 살펴봅니다
정수와 실수 변환은(는) CoddyKit의 무료 C Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
숫자의 두 세계
C에는 정수(정확하고 소수 부분이 없음)와 부동 소수점 수(근삿값이며 소수 부분이 있음)가 있습니다. 둘 사이를 변환하면 값이 저장되는 방식이 달라집니다.
#include <stdio.h>
int main(void) {
int i = 10;
double d = 10.5;
printf("%d %.1f\n", i, d);
return 0;
}int에서 double로 넓히기
대부분의 int 값은 double에 정확하게 들어가므로 자료형을 넓히는 변환은 안전합니다.
#include <stdio.h>
int main(void) {
int n = 1000;
double d = n;
printf("d = %.1f\n", d);
return 0;
}double에서 int로 좁히기
double에서 int로 변환하면 0을 향해 절삭되며 정보가 손실될 수 있습니다.
#include <stdio.h>
int main(void) {
double d = 12.75;
int n = (int)d;
printf("n = %d\n", n);
return 0;
}음수 절삭
0을 향한 절삭이란 -2.9가 -3이 아니라 -2가 된다는 뜻입니다.
#include <stdio.h>
int main(void) {
double d = -2.9;
int n = (int)d;
printf("n = %d\n", n);
return 0;
}float와 double의 정밀도
float는 유효 숫자를 약 7자리까지, double은 약 15자리까지 저장합니다. double을 float으로 변환하면 정밀도가 손실됩니다.
#include <stdio.h>
int main(void) {
double d = 3.14159265358979;
float f = (float)d;
printf("%.5f\n", f);
return 0;
}큰 int에서 float으로
매우 큰 int는 float에서 정확하게 표현되지 않아 반올림된 결과가 나올 수 있습니다.
#include <stdio.h>
int main(void) {
int big = 16777217;
float f = (float)big;
printf("%.1f\n", f);
return 0;
}반올림과 절삭
형변환은 값을 절삭합니다. 반올림하려면 먼저 0.5를 더하거나 라이브러리 함수를 사용하세요.
#include <stdio.h>
int main(void) {
double d = 4.6;
int truncated = (int)d;
int rounded = (int)(d + 0.5);
printf("%d %d\n", truncated, rounded);
return 0;
}평균 계산
정수의 평균을 계산할 때는 소수 부분을 유지하기 위해 부동 소수점 나눗셈이 필요합니다.
#include <stdio.h>
int main(void) {
int sum = 7, count = 2;
double avg = (double)sum / count;
printf("avg = %.2f\n", avg);
return 0;
}부동 소수점 같음 비교의 함정
부동 소수점 수는 근삿값이므로 ==로 비교하는 것은 위험합니다. 작은 허용 오차 안에 있는지 비교하세요.
#include <stdio.h>
#include <math.h>
int main(void) {
double a = 0.1 + 0.2;
if (fabs(a - 0.3) < 1e-9)
printf("close enough\n");
return 0;
}조건식에서 자료형 섞기
int와 double을 비교하면 int가 승격되므로 부동 소수점 방식으로 비교가 이루어집니다.
#include <stdio.h>
int main(void) {
int n = 3;
double d = 3.5;
if (n < d)
printf("3 < 3.5\n");
return 0;
}올바른 자료형 선택
개수와 인덱스에는 정수를 사용하고, 측정값과 비율에는 부동 소수점 수를 사용하세요.
#include <stdio.h>
int main(void) {
int items = 4;
double pricePer = 2.5;
printf("total = %.2f\n", items * pricePer);
return 0;
}빠른 확인
정수와 부동 소수점 수의 변환에 대한 이해도를 확인해 보세요.
복습: 정수와 부동 소수점 수의 변환
자료형에 따라 숫자가 어떻게 달라지는지 배웠습니다.
- int에서 double로의 변환은 대체로 안전하게 자료형을 넓힙니다
- double에서 int로 변환하면 0을 향해 절삭됩니다
- float은 double보다 적은 자릿수를 유지합니다
- 0.5를 더하거나 라이브러리 함수를 사용해 반올림합니다
- 부동 소수점 수에는
==를 사용하지 말고 허용 오차를 사용하세요
자주 묻는 질문
“정수와 실수 변환” 강의는 무료인가요?
네 — “정수와 실수 변환” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C Academy 강의 전체를 잠금 해제할 수 있습니다. C Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“정수와 실수 변환”에서 뭘 배우나요?
정밀도 문제를 살펴봅니다 브라우저에서 직접 실행하는 실습 코드로 C Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“정수와 실수 변환” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.