기본적으로 printf함수의 실수형은 소수점 이하 6자리만 출력한다.
소수점 이하의 자릿수를 조절하는 방법은 %f의 %와 f사이에 .n을 입력해서 소수점 자릿수를 조절한다.
#include <stdio.h>
int main() {
float flo = 10.12345;
printf("기본 형 : %f\n", flo);
printf("0자리 출력 : %.f 아니면 %.0f\n", flo, flo);
printf("3자리 출력 : %.3f\n", flo);
printf("5자리 출력 : %.5f\n", flo);
}
/* 결과
기본 형 : 10.123450
0자리 출력 : 10 아니면 10
3자리 출력 : 10.123
5자리 출력 : 10.12345
*/
기본적으로 math.h 헤더 파일에 포함된 올림 함수 ceil과 내림 함수 floor를 사용한다.
#include <stdio.h>
#include <math.h>
int main() {
float flo = 10.12345;
//올림 함수 ceil
printf("flo의 올림 값 : %.4f\n", ceil(flo * 10000) / 10000);
//내림 함수 floor
printf("flo의 내림 값 : %.4f\n", floor(flo * 10000) / 10000);
}
/* 결과
flo의 올림 값 : 10.1235
flo의 내림 값 : 10.1234
*/
ceil 함수는 소수점 첫 번째 자리를 올림하는 함수다.
floor 함수는 소수점 첫 번째 자리를 내림하는 함수다.
10.12345에 10000을 곱해 101234.5를 해주고,
그 후 소수 첫 째 자리에서 올림하면 101,235가 될 것이다.
이후 10000으로 나눠 10.1235가 출력되는 것이다.
마찬가지로 floor함수는 101234.5를 소수 첫 째 자리에서 내림해서 101,234가 되고,
이후 10000으로 나눠 10.1234가 되는 것이다.
위에서 말했듯이 %f는 기본 6자리까지 자동 출력된다.
그래서 10.1같은 수도 10.100000으로 출력된다.
이를 해결하기 위해선 다양한 형식지정자를 사용한다.
#include <stdio.h>
int main() {
float flo = 10.1;
printf("%%f 사용 : %f\n", flo);
printf("%%g 사용 : %g\n", flo);
printf("%%e 사용 : %e\n", flo);
}
/* 결과
%f 사용 : 10.100000
%g 사용 : 10.1
%e 사용 : 1.010000e+01
*/