코딩 농장/C 언어
C언어 실수 출력
GreenBNN
2021. 5. 19. 18:07
#include <stdio.h>
int main(void) {
float c = 38.8;
printf("%f\n", c);
return 0;
}
실수를 입력 후 출력하려고 했지만 입력한 대로 나오지 않는다. 뭐가 문제일까?
#include <stdio.h>
int main(void) {
float c = 38.8;
printf("%.2f\n", c);
return 0;
}
컴퓨터의 반올림 오차 때문이다.
0.1를 이진수로 변환할 때 아래의 방식으로 한다.
0.1 * 2 = 0.2 → 0
0.2 * 2 = 0.4 → 0
0.4 * 2 = 0.8 → 0
0.8 * 2 = 1.6 → 1
0.6 * 2 = 1.2 → 1
0.2 * 2 = 0.2 → 0 .....
0.000110011001100 ......
단순한 실수도 이진수로 변환하면 무한소수가 된다.
따라서 원하는 실수로 출력하기 위해선 소수 몇번째 자리까지 반올림을 해야한다.