john6014   10달 전

입력값이 19656 이라면

일단 처음에 10 보다 크니까 1의 자리에서 반올림 => 19660

100 보다 그니까 10 의 자리에서 반올림 => 19700

1000 보다 크니까 100 의 자리에서 반올림 => 20000

10000 보다 크니까 1000의 자리에서 반올림 -> 20000

이거 아닌가요? 

코드 그냥 무식하게 순서대로 짯는데 혹시 이거 자료형때문인가요? int 로 처리하니까 오차때문에 이상한 값이 나와서 일부로 실수형으로 해

cubelover   10달 전

float, double과 같은 자료형을 사용하면 오차가 발생합니다. int형만으로 충분히 풀 수 있는 문제입니다.

john6014   10달 전

#define RoundOff(x, dig) (floor((x) * pow(10,dig) + 0.5) / pow(10,dig))

요 반올림 함수를 쓰면안되나요? 저거는 int 쓰면 오차가 나는디...

cubelover   10달 전

floor, pow, 0.5등이 다 실수라서 그렇습니다.

댓글을 작성하려면 로그인해야 합니다.