실수 자료형의 크기 및 범위를 먼저 알아보자
자료형 | 크기 | 범위 | 유효자릿수 | 비고 |
float | 4바이트, 32비트 |
1.175494e-38~3.402823e+38 | 7 | IEEE 754 단정밀도 부동소수점 |
double | 8바이트, 64비트 |
2.225074e-308~1.797693e+308 | 16 | IEEE 754 배정밀도 부동소수점 |
long double |
8바이트, 64비트 |
2.225074e-308~1.797693e+308 | 16 | IEEE 754 배정밀도 부동소수점 |
표 출처 코딩 도장 (https://dojang.io/mod/page/view.php?id=45)
‡참고 : 지수 표기법
{
아주 큰 숫자나 작은 숫자를 표기할 때 사용하는 표기법이다.
실수 e+지수 : 실수*10의 거듭제곱이며 예를 들어 2.1e + 4이면 2.1에 지수인 4 즉 10^4를 거듭제곱한 것을 곱해주면
2.1 * 10000 = 21000이 된다.
실수 e-지수 : 실수 * (1 / 10)의 거듭제곱이며 예를 들어 2.1e - 4이면 2.1에 지수인 4 즉 (1 / 10)^4를 거듭제곱한 것을 곱해주면
2.1 * 1/10000 = 0.0021이 된다.
}
위와 같이 지수 표기법으로 출력을 할 땐 서식지정자 %e 를 쓰며 long double인 경우엔 le를 쓴다.
[실수 자료형 선언하기]
위와 같이 float를 선언할 때 숫자 뒤에 f를 붙이고 double은 아무것도 붙이지 않으며 long double은 숫자 뒤에 l를 붙인다.
그리고 1.f 나. 1f와 같이 소수점 앞뒤의 0을 f를 이용하여 생략 가능하다.
실수 자료형 출력을 할 때는 float와 double은 %f 의 서식지정자를 long double은 %lf를 사용한다.
여담으로 숫자 뒤에 f나 l를 붙이는 이유는 붙이지 않을 경우 double로 인식을 하기 때문인데 예를 들어 float보다 더 큰 숫자를 넣을 때 f를 붙이지 않으면 에러가 발생한다.
그리고 %f로 출력할 땐 기본적으로 소수점 6자리만 지원하기에 double 같은 경우 15 자릿수까지 지원을 하기에 이를 모두 출력하기 위해선 %. 15f로 자릿수를 지정해주면 된다.
[실수 자료형의 크기 구하기]
정수 자료형의 크기를 구하는 방법과 똑같이 sizeof를 이용하면 된다.
바이트의 크기를 구하는 것이므로 %d의 서식지정자를 쓴다.
[최솟값,최댓값 표현하기]
정수와는 다른 헤더 파일을 사용한다. float.h라는 헤더 파일을 이용하여 실수 자료형의 최소, 최댓값을 구해보자.
[실수형의 오버플로우와 언더플로우]
float.h를 이용하여 최솟값과 최댓값을 할당하고 num1에는 아주 큰 값으로 나눠주고 num2에는 10000.0f를 곱해주면 각각 언더플로우와 오버플로우가 발생하는데
이렇게 최솟값의 언더플로우는 0 또는 쓰레기 값을 출력하게 되고 최댓값의 오버플로우는 무한대의 의미를 가진 inf를 출력한다.
'c언어' 카테고리의 다른 글
c언어. 문자 자료형 사용하기 (4) | 2021.07.15 |
---|---|
C언어. 정수 자료형 사용하기 (0) | 2021.07.13 |
C언어. 변수 만들기 (0) | 2021.07.07 |