0Pricing
C Academy · 강의

정수와 실수 변환

정밀도 문제를 살펴봅니다

정수와 실수 변환은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 암시적 변환
  2. 명시적 캐스팅
  3. 정수와 실수 변환
  4. 변환의 함정
← C Academy(으)로 돌아가기