[C] 실수형 변수의 소수점

파치리스·2024년 11월 21일

C언어

목록 보기
2/5

반올림

기본적으로 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
*/

이때 n개의 자리를 출력하면 n+1에서 반올림한다는 점이다.

올림, 내림

기본적으로 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가 되는 것이다.

소수자리 0 없애기

위에서 말했듯이 %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
*/
  • %g를 사용하면 소수점 이하 0을 없앨 수 있다.
  • %e는 과학적 표기를 위해 사용한다.

0개의 댓글