실수형 데이터 타입

소숫점이 있는 데이터를 실수형 데이터 타입이라고 하며, 실수형은 float, double, long double의 형태로 제공됩니다.

 

실수형 데이터 저장공간의 크기를 기준은 아래와  같습니다.

float < double <= long double

double과 long double은 OS의 bit 수나 컴파일러에 따라 같은 경우도 있고 다른 경우도 있습니다. 일반적으로 float와 double의 크기는 IEEE 규정에 따라 대부분 4byte와 8byte를 따릅니다.

 

LINUX 64bit OS 기준으로 byte수와 값을 표현하는 범위에 대해서 알아보겠습니다.

데이터 type byte 수 유효 자리수 표현되는 데이터 범위
float 4 bytes 7 1.175494e-38 ~ 3.402823e+38
double 8 bytes 16 2.225074e-308 ~ 1.797693e+308
long double 16 bytes 34 3.362103e-4932 ~ 1.189731e+4932

 


실수형 변수 선언

float var;
float var = 0.0;
float var1, var2 = 0.0;

double var;
double var = 0.0;
double var1 = 0, var2;

long double var;
long double var = 0.0;
long double var1 = 0, var2;

위와 같이  변수를 1개 또는 여러 개 나열해서 선언할 수 있으며, 초기화도 가능합니다.

 


실수형 데이터 출력 테스트

#include <stdio.h>

int main(void)
{
    float value = 12345.6789;

    printf("value1 = [%f]\n", value);       // 숫자를 full로 출력
    printf("value2 = [%.2f]\n", value);     // 소숫점 2째 자리까지 출력
    printf("value3 = [%10.2f]\n", value);   // 전체 10자리, 소수점 2자리 출력
    printf("value4 = [%+10.2f]\n", value);  // 전체 10자리, 소수점 2자리 부호 표시 출력
    printf("value5 = [%-10.2f]\n", value);  // 전체 10자리, 소수점 2자리 좌측 정렬 출력
    printf("value6 = [%+-10.2f]\n", value); // 전체 10자리, 소수점 2자리 부호 표시 및 좌정렬
    printf("value7 = [%g]\n", value);       // 데이터 길이가 짧으면 f, 길면 e 형식 
    printf("value8 = [%e]\n", value);       // 데이터의 길이와 상관없이 e 형식
    
    return 0;
}

-------실행 결과--------
value1 = [12345.678711]
value2 = [12345.68]
value3 = [  12345.68]
value4 = [ +12345.68]
value5 = [12345.68  ]
value6 = [+12345.68 ] 
value7 = [12345.7]
value8 = [1.234568e+04] 

위와 같이 데이터를 formatting해서 출력이 가능합니다.

 

만약 double 데이터를 출력하려면 %f → %lf 로 하면 되고, lf, lg, lG, le, lE 처럼 앞에 l을 붙이면 됩니다.

만약 long double 데이터를 출력하면 %f → %Lf로 하면 되고, Lf, Lg, LG, Le, LE 처럼 앞에 L을 붙이면 됩니다.

 


실수형 상수

실수형 상수의 종류도 정수형 상수와 마찬가지로 정의하는 방식에 따라 이름이 있는 상수, macro 상수, literal 상수로 구분할 수 있습니다.

 

1. literal 상수

literal 상수는 상수값 자체를 의미합니다.  1000.0 , -1.205 등과 같이 숫자 자체를 표현하는 것을 실수형 literal 상수라고 합니다.

숫자형 표현 (double)
   100
   5.56
   -256.8
   3.151592
   double 범위를 벋어난 값의 숫자 뒤에 L을 붙임
   
지수 표기법
   -3.2456e+10, -3.2456E+10 
   3.1234e-10,  3.1234E-10

 


2. 이름 있는 상수

const float  상수이름 = 초기화값;
const double 상수이름 = 초기화값;

형태로 정의하며, 변수를 선언하는 방법과 같으며 앞에 const만 붙이면 됩니다. 명명 규칙상 상수의 이름은 대문자로만 구성하는 것이 일반적입니다. (소문자로 구성해도 상관은 없으나 변수와 구분하기 위해서 대문자로 사용하는 것이 일반적입니다.)

 

ex).

const double  PI  = 3.1415926535;

위와 같이 정의합니다.

 


3. 매크로 상수

매크로 상수는 #define을 이용하여 prepressor가 치환해주는 역할을 하는 상수입니다.

#define 매크로명  상수값

끝에 세미콜론(;)을 붙이지 않습니다.

 

#define PI 3.1415926535

처럼 사용하며 데이터 type이 없으므로 컴파일러는 타입체크를 값으로 합니다.

 

 

ex).

#define PI 3.145926535

...

double radio = 15.0;
double round;

...

round = radio * 2 * PI;

라고 사용하면 preprocessor가 컴파일 시에 

double radio = 15.0;
double round;

...

round = radio * 2 * 3.145926535;

로 데이터를 치환한 후에 컴파일이 됩니다. 즉 PI라는 이름이 없어지고 literal 상수화 되어버립니다. 

 

 

 

 

C Programming Language 문법

1. C 프로그래밍 언어는? 2. C언어 개발 환경 (실습 환경) 3. C언어의 컴파일 과정 4. C 소스 파일 구성 5. 주석문(Comment) 6. 식별자 명명 규칙 7. C 프로그래밍의 시작 - 함수 8. 변수와 상수 (정수형) 9. 변..

www.it-note.kr

 

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

Tag ,

댓글을 달아 주세요