문타쿠, 공부하다.
[C언어 코딩 도장] Unit 8. 실수 자료형 사용하기 본문
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;
}
'C언어 > C언어 코딩 도장' 카테고리의 다른 글
[C언어 코딩 도장] Unit 9. 문자 자료형 사용하기 (0) | 2023.08.21 |
---|---|
[C언어 코딩 도장] Unit 8. 연습문제 및 심사문제 (0) | 2023.08.17 |
[C언어 코딩 도장] Unit 7. 연습문제 및 심사문제 (0) | 2023.08.16 |
[C언어 코딩 도장] Unit 7. 정수 자료형 사용하기 (0) | 2023.08.16 |
[C언어 코딩 도장] Unit 6. 디버거 사용하기 (0) | 2023.08.15 |