실수의 저장 방법
int 정수(Integer)
변수 선언에 따라 각 값은 다음과 같다.
위 값보다 더 큰 경우를 사용하게 될 경우에는 어떻게 해야할까?
float, double(실수)를 선언해주어야 한다.
float은 4byte이다.
double은 8byte이다. 엄청나게 큰 수를 저장할 수 있다.
float과 double은 저장방식이 다르다. 다음 그림을 보자.
우선 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 |