#include <cmath>
double round(double d) { return floor(d + 0.005); }
그냥 이렇게만 했을 때 이 floor()라는 함수는 버림 함수-_- 그 것도 정수 상태로 만들어주는!!!!!!!!!!!!!!!!!!!!
그래서 그냥 이렇게 하면 소수점 이하는 다 버리게 되는 셈. 누가 이걸 올려 놓은거야?-_-
따라서
double round(double d, int pos)
{
double tmp;
tmp = d * pow(10.0, pos);
tmp = floor(tmp + 0.5);
tmp *= pow(10.0, -pos);
return tmp;
}
와 같이 pow() 함수를 써서 실제 소수점을 가지는 값을 원하는 소수점까지 정수 값으로 만든 후에
floor() 함수를 써서 나머지를 버린 후
그 값을 다시 원래의 double 형태로 만들어 준 다음에 return 하는 방식을 사용하여야 한다.
이 때 pow(base, expoent) 함수의 경우 앞선 base 가 되는 값이 double 형태로 쓰여 있어야지 오류가 발생하지 않는다!
'프로그래밍 > C/C++' 카테고리의 다른 글
char to string (0) | 2012.04.24 |
---|---|
배열 초기화 (0) | 2012.04.13 |
Single char to int (0) | 2012.03.15 |
C++에서 소문자, 대문자 바꾸기 (0) | 2011.10.11 |
getline(cin, temp); (0) | 2011.09.26 |