19. 실수는 근사치
0.1에서 0.5사이에 몇 개의 실수가 있을까요?
여러분이 아는 것처럼 무한 개의 실수가 존재하죠.
따라서 0.1과 0.5 사이의 모든 실수를 유한한 메모리에 표현할 수 없어요.
실제로 컴퓨터에서 실수 표현은 오차 범위 내에서 값을 표현하는 근사치예요.
C언어에서는 실수 형식으로 float 형식과 double 형식을 제공해요.
float 형식은 4바이트이며 double 형식은 8바이트예요.
그리고 C언어에서 실수 표현은 기본적으로 double 형식으로 취급하며 float 형식을 표현할 때는 뒤에 f를 붙여요.
그렇지만 C언어에서 실수 형식 사이에는 서로 묵시적 형변환을 제공해서 실수 뒤에 f를 붙이지 않아도 가능하답니다.
물론 값 잘림 현상이 발생할 수 있으니 주의하세요.
◈ 실수 형식은 오차 범위를 갖는 근사값
#include <stdio.h>
int main()
{
float f = 0.0f; //float 형 변수 f를 선언하고 0.0으로 초기화
f = f+0.1f; //변수 f에 0.1을 더함
printf("%.9f\n",f); //변수 f값을 소수점 이하 9자리까지 출력
f = f+0.1f; //변수 f에 0.1을 더함
printf("%.9f\n",f); //변수 f값을 소수점 이하 9자리까지 출력
f = f+0.1f; //변수 f에 0.1을 더함
printf("%.9f\n",f); //변수 f값을 소수점 이하 9자리까지 출력
return 0;
}
◈ 실행 결과
0.100000001
0.200000003
0.300000012
관련 게시글
printf 함수 [C언어 표준 라이브러리 함수 가이드]
동영상 강의
[C언어 무료 동영상 강의] 19. 실수는 근사치 20. 실수 형식의 메모리 구조
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[디딤돌 C언어] 24. printf 함수 (0) | 2016.01.01 |
---|---|
[디딤돌 C언어] 23. 표준 입출력 개요 (0) | 2016.01.01 |
22. 정리하기 (0) | 2016.01.01 |
21. 명명법 (0) | 2016.01.01 |
[디딤돌 C언어] 20. 실수 형식의 메모리 구조 (0) | 2016.01.01 |
18. Overflow와 값 잘림 현상 (0) | 2016.01.01 |
17. 정수 형식의 표현 범위 (0) | 2016.01.01 |
16. char 형식으로 정수 표현, 형변환 (0) | 2016.01.01 |
15. ASCII 코드 (0) | 2016.01.01 |
14. 부호있는 정수 표현 - 2진 보수 방식 (0) | 2016.01.01 |