sprintf(swprintf, _stprintf) 함수에서 실수 문자열 표현시
소수점 첫째자리까지 표현하게 설정한 경우 자체적으로 소수점 둘째자리에서 반올림처리해서 표시해버린다.
double num = 99.99;
TCHAR szText[256];
_stprintf(szText, _T("%.01f"), num)인 경우
문자열은 "100.0"이 된다. 프로그래머가 반올림을 의도하지 않고 이하 자리는 버림을 원하는 경우 이러한 표현은 난감할 것이다.
이경우
floor 함수를 사용하거나,
숫자의 범위가 정수로 커버가능한 경우 간단히 형 변환식으로 처리할 수 있다.
floor 함수 사용: _stprintf(szText, _T("%.01f"), floor(10. * num) / 10.);
형변환 처리: _stprintf(szText, _T("%.01f"), (double)(int)(num * 10) / 10);
'C, C++ 문법' 카테고리의 다른 글
텍스트 간결하게 편집 중복공백 중복개행 주석 제거 (0) | 2022.08.27 |
---|---|
콘솔 출력창 출력 범위 늘리고자 할 때 (0) | 2012.10.25 |
c의 qsort와 stl의 sort에서 비교 함수(또는 함수객체) 사용시 결과값 세팅 주의 (0) | 2012.10.22 |
연산자 순위 헷갈리는 것 (0) | 2012.10.19 |
가변인수 활용하기 (0) | 2012.03.06 |
대소문자 구별 없이 소스 문자열에서 특정 문자열 찾기 (0) | 2012.03.05 |
문자열 입력시 헥스 문자열을 통해 헥스 값을 그대로 입력시키고자 할 때 알아두면 좋은 tip! (0) | 2012.03.01 |