#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
Posted by halloRa
,