Written By Imperfect
[C언어 강좌]5강 : 변수에 대한 이해(실수형)
목차 |
1. 실수형 변수의 종류 |
2. 실수형 변수 사용해보기 |
1. 실수형 변수의 종류
실수형 변수에는 아래와 같은 종류가 있습니다.
형식이름 |
바이트 |
값의 범위 |
float |
4 |
3.4E+/-38(7개의 자릿수) |
double |
8 |
1.7E+/-308(15개의 자릿수) |
쉽게말해 float의 범위는 3.4*10의 -38승 ~ 3.4*10의 38승이고,
double의 범위는 1.7*10의-308승 ~ 1.7*10의 308승 입니다.
그냥 범위가 엄청나다는 것만 알면됩니다.
그리고 실수형변수는 정수형변수와 다르게 소수점 자리까지 표시할 수 있습니다.
2. 실수형 변수 사용해보기
실수형변수를 출력을 해봅시다.
이전 정수형(int)에서는 printf로 출력할때 %d를 사용했었습니다.
하지만 이번엔 %f를 사용해야 합니다.
아래는 그 예시 입니다.
1 2 3 4 5 6 7 8 | #include<stdio.h> int main() { float flo_ = 0.123456f; double dou_ = 0.654321; printf("float : %f, double : %f", flo_, dou_); return 0; } |
(2)위의 설명에서 값의 손실이 일어나는 이유는 표에서 설명한것처럼 double 자료형의 크기는 8 byte인데 이보다 크기가 작은 4 byte인 float형에 double형의 값을 대입하기에 값의 손실이 일어나게 됩니다.
아래는 위의 예시 출력 결과 입니다.
위처럼 소수점6자리까지 표시 합니다.
그 이유는 %f는 기본적으로 소수점 6자리까지만 출력하기 때문인데요, 그 이상을 출력하는 방법은 나중에 설명하겠습니다.
하지만 만약 소수점 아래 7자리 이상까지 지정하고 출력하면 어떻게 출력이 될까요?
아래의 예시를 봅시다.
1 2 3 4 5 6 7 8 | #include<stdio.h> int main() { float flo_ = 0.123456789f; double dou_ = 0.987654321; printf("float : %f, double : %f", flo_, dou_); return 0; } |
위의 예시에선 flo_와 dou_ 의 값을 각각 소수점 아래 9자리까지 지정하였습니다.
그렇다면 출력을 한번 봅시다.
위에 보시면 flo_의 값은 0.123457로, dou_의 값은 0.987654로 출력된것을 알수있습니다.
위와같이 소수점 표시 한계 이상으로 소수점을 입력했을 경우, 소수점 7자리에서 반올림 된 값이 나오게 되는것 입니다.
이제 저번에 배웠던 내용과 섞어서 소스를 작성해 봅시다.
1 2 3 4 5 6 7 8 9 | #include<stdio.h> int main() { float flo_ = 0.123456789f; double dou_ = 0.987654321; int result = flo_ + dou_; printf("float : %f, double : %f, float + double = %d", flo_, dou_, result); return 0; } |
위에서는 int형의 변수에 float형의 변수와 double형의 변수를 더한값을 지정하였습니다.
그렇다면 컴파일 결과가 어떻게 나왔을까요? 아래의 출력결과를 봅시다.
결과가 1이 나왔습니다.
왜 1이 나왔을까요, 직접 계상해봅시다.
flo_의 값인 0.123456789와 dou_의 값인 0.987654321을 더하면
1.11111111이 나옵니다.
하지만 int형은 소수점을 표현할수 없기때문에 소수점 아래 첫번쨰 자리에서 반올림을 합니다.
그래서 결과가 1이 나오게 된것입니다.
그래서 오늘강좌는 여기까지 하겠습니다.
다음강좌 |
[C언어 강좌]5강 : 변수에 대한 이해(실수형)
'Programming > C Lang Lecture' 카테고리의 다른 글
[C언어 강좌]7강 : 배열의 이해(정수,실수형) (0) | 2014.07.23 |
---|---|
[C언어 강좌]6강 : 변수에 대한 이해(문자형) (0) | 2014.07.21 |
[C언어 강좌]4강 : 변수의 출력&연산자 (0) | 2014.07.17 |
[C언어 강좌]3강 : 변수에 대한 이해(정수형) (0) | 2014.07.13 |
[C언어 강좌]2강 : C언어로 만드는 첫번째 프로그램, Hello world! (0) | 2014.07.12 |