Saturday, December 02, 2006
C언어] 소수점 이하 버리기, 실수를 정수로; float to int
C에서, 반올림하지 않고 그냥 소수점 이하를 버리기 위해서는
(int)
이렇게 캐스팅하여, 실수를 정수로 바꾸어 주면 됩니다.
소스 파일명: 0.cpp
위의 예제에서, 소수점 이하에 9 가 많이 붙으면 "반올림"되는 현상이 나타나는데, 이것은 엄밀한 의미에서의 반올림은 아니고, 부동소수점 표현의 문제일 것입니다.
진짜 반올림 방법은 여기에 있습니다: ▶▶ [C언어 기초] 반올림 함수 - Round To Int - roundToInt()
▶▶ C언어] 실수, 정수부/소수부 구하기, 소수점 이하만 추출; Get FRACTIONAL PART Only
(int)
이렇게 캐스팅하여, 실수를 정수로 바꾸어 주면 됩니다.
소수점 이하 삭제 예제
소스 파일명: 0.cpp
#include <stdio.h>
int main(void) {
float f;
f = 123.99999f;
printf("%d\n", (int) f);
// 출력 결과(반올림 없음): 123
f = 123.999999f; // 9가 한 개 더 붙으면
printf("%d\n", (int) f);
// 출력 결과(반올림 됨): 124
double d;
d = 4543.999999999999;
printf("%d\n", (int) d);
// 출력 결과(반올림 없음): 4543
d = 4543.9999999999999; // 9가 한 개 더 붙으면
printf("%d\n", (int) d);
// 출력 결과(반올림 됨): 4544
return 0;
}
int main(void) {
float f;
f = 123.99999f;
printf("%d\n", (int) f);
// 출력 결과(반올림 없음): 123
f = 123.999999f; // 9가 한 개 더 붙으면
printf("%d\n", (int) f);
// 출력 결과(반올림 됨): 124
double d;
d = 4543.999999999999;
printf("%d\n", (int) d);
// 출력 결과(반올림 없음): 4543
d = 4543.9999999999999; // 9가 한 개 더 붙으면
printf("%d\n", (int) d);
// 출력 결과(반올림 됨): 4544
return 0;
}
위의 예제에서, 소수점 이하에 9 가 많이 붙으면 "반올림"되는 현상이 나타나는데, 이것은 엄밀한 의미에서의 반올림은 아니고, 부동소수점 표현의 문제일 것입니다.
진짜 반올림 방법은 여기에 있습니다: ▶▶ [C언어 기초] 반올림 함수 - Round To Int - roundToInt()
▶▶ C언어] 실수, 정수부/소수부 구하기, 소수점 이하만 추출; Get FRACTIONAL PART Only
tag: cpp
C언어 | C/C++ (Visual C++) 프로그래밍
<< Home