실수의 저장 방법

int 정수(Integer)

변수 선언에 따라 각 값은 다음과 같다.

변수 선언 표

위 값보다 더 큰 경우를 사용하게 될 경우에는 어떻게 해야할까?

 

float, double(실수)를 선언해주어야 한다.

float은 4byte이다.

float(4byte)

double은 8byte이다. 엄청나게 큰 수를 저장할 수 있다.

double(8byte)

float과 double은 저장방식이 다르다. 다음 그림을 보자.

우선 float부터 보자.

 

float의 저장 공간 시각화

floating point(점이 떠다닌다)는 의미는 float의 약자이다. 즉, 소수 점이 자리를 이동하면서 떠다닌다는 의미를 갖는다.

그렇기에 정수표현식으로 변환하여 저장한다.

32.46=>3.245*10^1 

즉, 4 앞에 있는 소수점을 한자리 앞으로 옮겨줌으로써 10^1을 곱해준다.

결국 지수부와 가수부는 각자 따로 저장된다.

다른 예로,

0.0000003245=>3.245*10^-7 

이또한 10^-7은 지수부에서 옮겨지고, 3.245는 가수부에서 처리된다.

 

float형 실습

 

#include <stdio.h>

int main()
{
    //pi: 3.1415926538979
    float pi=3.1415926538979f;
    
    printf("%f",pi);

    return 0;
}


3.141593

float형은 6자리까지 밖에 출력을 안해준다. 더 보고싶다면

printf("%.20f",pi);로 변경해주어야 한다. 그러면 소수점이 20자리까지 나올 것이다.

 

#include <stdio.h>

int main()
{
    //pi: 3.1415926538979
    float pi=3.1415926538979f;
    
    printf("%.20f",pi);

    return 0;
}

3.14159274101257324219

 

가만히 보니 값이 조금 다르다. 이는 값의 저장방식이 다르기 때문에 변형된것이다.

제대로 된 값을 찾고 싶으면 double 형을 사용하면된다.

 

정리해보면,

-float은 출력시 %f 

-float은 값 설정시 예를들어 2000이면 2000.0f 를지정해준다.

-float은 값이 어느정도 커지면 값이 정확하게 출력이 안된다.

-double은 출력시 %lf

-double은 어느정도 float보다는 값이 정확하지만(64bit이기 때문), 이또한 값이 더 커진다면 정확하게 출력이 안된다.

-int는 출력시 %d

 

 

'Computer engineering > C' 카테고리의 다른 글

If-else 조건문  (0) 2021.04.21
If 조건문  (0) 2021.04.11
4. 대입 및 산술 연산자  (0) 2021.04.01
3. #define이란?  (0) 2021.04.01
1. 수의 체계 -보수  (0) 2021.03.25

+ Recent posts