Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

문타쿠, 공부하다.

[C언어 코딩 도장] Unit 8. 실수 자료형 사용하기 본문

C언어/C언어 코딩 도장

[C언어 코딩 도장] Unit 8. 실수 자료형 사용하기

개발새발 문타쿠 2023. 8. 17. 04:14

INTRO

"실수 자료형"

자료형 서식 지정자 크기 범위 유효 자릿수 비고
float f(부동), e(지수) 4바이트(32비트) 1.175494e-38 ~ 3.402823e+38 7 단정밀도 부동소수점
double f(부동), e(지수) 8바이트(64비트) 2.225074e-308 ~ 1.797693e+308 16 배정밀도 부동소수점
long double lf(부동), le(지수) 8바이트(64비트) 2.225074e-308 ~ 1.797693e+308 16 배정밀도 부동소수점
  • 부동소수점
    • 실수와 소수점을 2진수로 표현하는 방식
    • 실수를 메모리 또는 디스크에 저장하는 방식
  • 지수 표기법
    • 과학적 표기법
    • 실수를 소스 코드에 표기하거나 화면에 출력하는 방법

8.1 실수형 변수 선언하기

"부동 소수점으로 실수형 변수 사용하기"

#include <stdio.h>

int main(void)
{
	float num1 = 0.1f;
	double  num2 = 3867.2158205;
	long double num3 = 9.3275104L;

	printf("%f %f %lf\n", num1, num2, num3);

	return 0;
}

  • 소수는 기본적으로 소수점 아래 6번째 자리까지 나타남
  • 6번째 자리를 넘어가는 경우 반올림 해서 6번째 자리까지 표현

"지수 표기법으로 실수형 변수 사용하기"

#include <stdio.h>

int main(void)
{
	float num1 = 3.e5f;
	double  num2 = -1.3827e-2;
	long double num3 = 5.21e+9L;

	printf("%f %f %lf\n", num1, num2, num3);

	printf("%e %e %le\n", num1, num2, num3);

	return 0;
}


8.2 자료형 크기 구하기

#include <stdio.h>

int main(void)
{
	float num1 = 0.0f;
	double  num2 = 0.0;
	long double num3 = 0.0l;

	printf("float      : %zd\n", sizeof(num1));
	printf("double     : %zd\n", sizeof(num2));
	printf("long double: %zd\n", sizeof(num3));

	return 0;
}


8.3 최솟값과 최댓값 표현하기

  • 실수 자료형의 최솟값과 최댓값을 표현하려면 'float.h' 헤더 파일을 사용해야 한다.
#include <stdio.h>
#include <float.h>

int main(void)
{
	float num1 = FLT_MIN;
	float num2 = FLT_MAX;
	double num3 = DBL_MIN;
	double num4 = DBL_MAX;
	long double num5 = LDBL_MIN;
	long double num6 = LDBL_MAX;

	printf("float min: %e\n", num1);
	printf("float max: %e\n\n", num2);

	printf("double min: %e\n", num3);
	printf("double max: %e\n\n", num4);

	printf("long double min: %le\n", num5);
	printf("long double max: %le\n\n", num6);

	return 0;
}


8.4 오버플로우와 언더플로우 알아보기

  • 실수는 오버플로우가 발행하면 최솟값으로 돌아가지 않고 무한대가 되어 inf가 출력된다.
  • 실수는 언더플로우가 발생하면 언더플로우를 0 또는 쓰레기 값으로 처리한다.
#include <stdio.h>
#include <float.h>

int main(void)
{
	float num1 = FLT_MIN;
	float num2 = FLT_MAX;

	num1 = num1 / 100000000.0f;
	num2 = num2 * 1000.0f;

	printf("float 언더플로우: %e\n", num1);
	printf("float 오버플로우: %e\n\n", num2);

	return 0;
}