본문 바로가기
C언어

[C언어] 실수 자료형, double 을 사용하는 이유

by 에파 2021. 5. 12.
728x90

C언어 실수 자료형, double 을 사용하는 이유

 

 

실수는 크기에 따라 float, double, long double 로 구별하며, 값을 저장할 수 있는 범위가 다릅니다. 가장 작은 float도 4바이트이므로 저장 범위가 큰 편입니다. 실수 자료형은 값의 범위보다 유효 숫자의 개수에 주목할 필요가 있습니다.

 

#include <stdio.h>

int main(void)
{
    float ft = 1.234567890123456789;
    double db = 1.234567890123456789;
    
    printf("float형 변수의 값 : %.20f\n", ft);
    printf("double형 변수의 값 : %.20lf\n", db);
    
    return 0;
}

/*
<Run>
float형 변수의 값 : 1.23456788063049316406
double형 변수의 값 : 1.23456789012345669043
*/

 

실행결과에서 이상한 점이 보입니다. 신기하게도 출력값이 초깃값과 다릅니다. 이렇게 값이 달라지는 이유는 컴퓨터에서 실수를 표현하는 방식이 오차를 갖고 있기 때문입니다. 따라서 float형은 유효 숫자 7자리, double형은 15자리의 범위 내의 값을 사용하는 것이 좋습니다.

 

유효 숫자의 개수를 계산해가며 프로그래밍하는 것이 걱정이라면 다음 방법을 사용할 수 있습니다.

 

 

방법 1. 정수형을 기본으로 사용하고 실수형은 꼭 필요한 경우만 사용합니다.

 

방법 2. 실수형은 유효 숫자가 많은 double형을 기본으로 사용합니다.

 

 

long double형이 가장 유효 숫자가 많다고 생각할 수 있는데 사실 해당 자료형은 크기가 컴파일러마다 다르기 때문에 코드의 호환성을 보장할 수 없으므로 주의해서 사용해야 합니다.

 

 

'C언어' 카테고리의 다른 글

[C언어] const를 사용한 변수  (0) 2021.05.14
[C언어] 문자열 저장  (0) 2021.05.13
[C언어] unsigned 정수 자료형, 사용 이유  (0) 2021.05.11
[C언어] 정수 자료형  (0) 2021.05.10
[C언어] 변수 선언 방법  (0) 2021.05.09

댓글