#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 형태로 쓰여 있어야지 오류가 발생하지 않는다!