2013-11-23 1 views
1

현재 sprintf을 사용하여 사용자에게 반올림 된 결과가 표시됩니다.sprintf의 반올림 동작

응용 프로그램이 사용자가 볼 때이 값을 기반으로 의사 결정을해야 응용 프로그램이 제대로 작동하는지 확인할 수 있습니다. 현재 내부적으로 반올림이 사용되지 않으므로 사용자가 9.8의 결과를 볼 때 내부 코드는 9.7999999999999996과 같은 값을 보지 못합니다 9.8

주위를 둘러 보니 C++에서 둥근 함수를 찾을 수 없었습니다. 둥근 방법에 대한 좋은 예가 나와 있습니다. 모든 경우에 sprintf이 정확히 일치하지 않을 수도 있습니다.

현재 로직을 제어하기 위해 sprintf의 출력을 숫자로 다시 변환했습니다.

더 깨끗한 접근 방법에 대한 제안 사항이 있으십니까?

답변

0

당신은 바닥을 고려하고 같은 것을 수행 할 수 있습니다 (로직에 대한 프리젠 테이션 기능을 사용하여 잘못된 느낌) :

float p = 7.9999996; 
float q= floor((p+0.005)*100)/100; 

두 자리 음수를 들어 X.XX

에서 반올림는거야 같은 방식으로 ceil을 사용할 필요가있다 :)