반올림이 문제인 것 같습니다. 셋째자리 반올림이 없네요.
보통 printf 는 %.2f 를 할때 알아서 셋째자리 반올림을 하긴할텐데..
하는 방식이 정확히 정의가 안되어 있는 것 같습니다. (관련 사이트가 있었는데 못찾겠네요..)
예를 들면, 셋째자리 반올림이 셋째자리가 5보다 크거나 같으면 둘째자리 +1로 하거나 ("Round to nearest, ties away from zero" 보통 많이 아는 방법)
오차가 가장 적으나 가능하면 둘째자리를 짝수로 만드는 방법 “round to nearest and ties to even”이 있을 수 있습니다.
근데 두번째로 처리하는 컴파일러가 많은 것 같습니다.
참고로 아래 것을 한번 돌려보세요.
#include using namespace std; int main() { printf( "%.2f ", 5.00); printf( "%.2f ", 5.115); printf( "%.2f ", 5.125); printf( "%.2f ", 5.135); return 0; }
az6090 5년 전
테스트 케이스에서는 맞게 나오고
입력에 0.0 또는 10.0을 섞어서 넣어주어도 맞게 계산되는 거 같은데.....
혹시 예외처리를 덜 한건지 궁금해서 질문 드립니다.