몽-구
몽구의 우당탕탕 개발 공부
몽-구
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • PS (38)
      • 백준 (24)
      • 프로그래머스 (14)
    • Dev (58)
      • Kotlin (0)
      • Java (4)
      • Spring, SpringBoot (1)
      • C (8)
      • Python (10)
      • Dart (1)
      • 알고리즘 (7)
      • 자료구조 (3)
      • Git (1)
      • Linux (2)
      • VS Code (1)
      • 환경 설정 (8)
      • Conference (1)
      • 42Seoul (3)
      • Node.js (1)
      • ShellScript (1)
      • IntelliJ (0)
      • MacOS (2)
      • 기타 (3)
    • CS (1)
      • 데이터베이스 (1)
    • DS (4)
      • Coursera (4)
    • 리뷰 (1)
      • 제품 리뷰 (1)
    • 일상 (3)
      • 자동화 (1)
      • 목표 및 계획 (2)
      • 회고 (0)
    • 삶에 대한 태도 (1)
      • 유튜브를 보며 (1)

블로그 메뉴

  • GitHub

인기 글

반응형

태그

  • 코딩테스트
  • 파이썬
  • 백준알고리즘
  • 리눅스
  • c언어
  • Algorithm
  • 정렬
  • sort
  • 백준온라인저지
  • Linux
  • 프로그래머스
  • BOJ
  • 백준
  • 알고리즘
  • Python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
몽-구

몽구의 우당탕탕 개발 공부

[C언어] 실수 자료형 정리 (64bit Windows 기준)
Dev/C

[C언어] 실수 자료형 정리 (64bit Windows 기준)

2020. 6. 16. 20:44
반응형

실수 자료형

C언어에서 사용하는 실수 자료형은 다음과 같다.

 

자료형 크기 범위 유효
자릿수
양수 최솟값 양수 최댓값  형식 지정자
(실수 표기법)
형식 지정자
(지수 표기법)
float 4byte (32bit) 1.175494e-38 ~
3.402823e+38
7 FLT_MIN FLT_MAX %f %e
double 8byte (64bit) 2.225074e-308 ~
1.797693e+308
16 DBL_MIN DBL_MAX %f %e
long double 8byte (64bit) 2.225074e-308 ~
1.797693e+308
16 LDBL_MIN LDBL_MAX %Lf %Le

* 최솟값 및 최댓값은 float.h 헤더 파일에 정의되어 있으므로 해당 심볼을 사용하고자 한다면 해당 헤더 파일을 include해야 한다.

* 정수 자료형과 비슷한 맥락으로 long double 자료형은 운영체제와 플랫폼마다 크기가 다르다. 여기를 확인하자.

 

유효 자릿수?

 

유효자릿수는 실수를 일정 자릿수만큼만 표현할 수 있다는 의미이다. 유효자릿수가 7인 float형을 예시로 들면 다음과 같다.

#include <stdio.h>

int main()
{
	float f1 = 0.1f;
	float f2 = 12.34f;
	float f3 = 123.4567f;
	float f4 = 12345.678f;
	float f5 = 1234.56789012345f;

	printf("float형 0.1 은\t\t\t%f\t로 출력\n", f1);
	printf("float형 12.34 는\t\t%f\t로 출력\n", f2);
	printf("float형 123.4567 은\t\t%f\t로 출력\n", f3);
	printf("float형 12345.678 은\t\t%f\t로 출력\n", f4);
	printf("float형 1234.56789012345 는\t%f\t로 출력\n", f5);

	return 0;
}

/*********************** [결과] ***********************
float형 0.1 은                  0.100000 	로 출력
float형 12.34 는                12.340000 	로 출력
float형 123.4567 은             123.456703 	로 출력
float형 12345.678 은            12345.677734 	로 출력
float형 1234.56789012345 는     1234.567871 	로 출력
******************************************************/

printf 함수로 float형을 소수점 조정없이 %f만으로 출력을 하면 기본적으로 소수점 아래 6자리까지 출력한다.

 

f1는 정수 부분 1자리 + 소수 부분 1자리 = 2자리 < 유효 자릿수 7자리이므로, 출력되는 수가 선언한 수와 동일하게 정상 출력된다.

 

f2 또한 정수 부분 2자리 + 소수 부분 2자리 = 4자리 < 유효 자릿수 7자리이므로, 출력되는 수가 선언한 수와 동일하게 정상 출력된다.

 

하지만 f3은 애초에 선언한 수가 정수 부분 3자리 + 소수 부분 4자리 = 7자리 = 유효 자릿수 7자리이므로, 소수점 조정없이 %f만으로 출력을 하게 된다면 123.456700이 아닌 123.456703이라는 부정확한 값이 출력된다. f4와 f5도 마찬가지로 선언한 수와는 다른 부정확한 값이 출력되는 것을 확인할 수 있다.

 

여기서 주목해야 할 점은, 앞 7자리까지는 선언한 것과 일치하는 정확한 값이 출력된다는 것이다. 이것이 유효자릿수의 의미다. 따라서 소수점을 정밀하게 표현하고자 한다면 유효자릿수가 더 많은 double이나 long double 자료형으로 선언해줘야 한다.

 

 

 

실수형 변수 선언

정수 자료형과 달리 실수 자료형은 선언할 때 약간의 주의를 요한다.  일반적으로 변수를 선언할 때는 [자료형 변수명 = 값] 형태로 선언하는데, 값 뒤에 특정한 시그널을 적어줘야 한다.

 

float 형을 선언할 때는 [float 변수명 = 값f] 처럼 값 뒤에 f를 붙여준다.

// float 변수명 = 값f;
float num = 14.56f;

 

double형을 선언할 때는 일반적인 형태로 [double 변수명 = 값] 형태로 선언한다.

// double 변수명 = 값;
double num = 16.78;

 

long double형을 선언할 때는 [long double 변수명 = 값l] 처럼 값 뒤에 l을 붙여준다.

// long double 변수명 = 값l;
long double num = 32.853l;

 

 

 

Source

1. C언어 코딩 도장: 8.0 실수 자료형 사용하기

2. C언어 코딩 도장: 8.1 실수형 변수 선언하기

3. C언어 코딩 도장: 8.3 최솟값과 최댓값 표현하기

반응형
저작자표시 (새창열림)

'Dev > C' 카테고리의 다른 글

[C언어] scanf 정리  (0) 2020.06.25
[C언어] 변수와 자료형, 그리고 상수  (0) 2020.06.20
[C언어] 문자 자료형과 아스키 코드(ASCII)  (1) 2020.06.19
[C언어] 실수형 변수 출력 시 소수점 자릿수 조절 (반올림/올림/내림)  (0) 2020.06.17
[C언어] 정수 자료형 정리 (64bit Windows 기준)  (0) 2020.06.15
    'Dev/C' 카테고리의 다른 글
    • [C언어] 변수와 자료형, 그리고 상수
    • [C언어] 문자 자료형과 아스키 코드(ASCII)
    • [C언어] 실수형 변수 출력 시 소수점 자릿수 조절 (반올림/올림/내림)
    • [C언어] 정수 자료형 정리 (64bit Windows 기준)
    몽-구
    몽-구
    소망보단 목표를, 생각보단 실천을

    티스토리툴바