소숫점 출력에 대하여

gwpia0409 Reply 5 years 48 weeks ago
수업시간에 f=3.145; printf("%4.2f", f); 이러한 경우 f를 소숫점 세번째자리부터 버림하여 두번째 자리까지 표기한다고 했었 던 것으로 기억이 나는데, 실제로 비주얼스튜디오에서 해보니까 3.1450까지는 버림하여 3.14로 출력이 되고 3,1451부터는 올림하여 3.15로 출력이 되던데 (이게 반올림도 아니더군요...;;; 반올림이라면 경계가 3.1449에서 생겨야 할 거 같은데...) printf를 통하여 출력될 때 float는 지정한 소숫점 자리 아래에서 반올림하는 것이 맞나요? 이게... 운영체제마다 다른 건지... 음음... 버림이라 하셨던 거 같은데 다소 혼란스러워 질문 드립니다!
onacloud Reply 5 years 47 weeks ago
float f=3.145; 를 하고 debug를 해서 f 값을 확인하면 3.14499998 으로 저장되어 있어요. 이 문제는 정확도 문제로 알려져 있어요. 아래 링크의 "정확도 문제"를 참고하세요 https://ko.wikipedia.org/wiki/%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90