06단계 · 실전으로 넘어가기
출력 형식과 반올림 함정
제출 형식에 맞춰 자리수를 고정하고, `round` 의 함정을 미리 만나 둔다.
먼저 알아볼게요
코드로 이동 ↓문제가 "반올림하여 소수점 둘째 자리까지" 처럼 형식을 지정하면 그대로 맞춰서 낸다. 채점이 어디까지 봐주는지는 우리가 알 수 없으니, 지시된 자리수를 그대로 맞추는 쪽이 안전하다.
round(값, 2) 는 숫자를 돌려주고, f"{값:.2f}" 는 문자열을 돌려준다. 차이는 끝자리 0 에서 드러난다: round(1.50, 2) 는 1.5 로 보이지만 f"{1.50:.2f}" 는 1.50 이다. 둘째 자리까지 적으라는 지시에는 f-string 이 안전하다.
`round` 는 우리가 배운 반올림과 조금 다르다. round(2.675, 2) 는 2.68 이 아니라 2.67 이다. 컴퓨터가 2.675 를 정확히 저장하지 못해 실제로는 2.67499... 이기 때문이다. 버그가 아니라 실수(부동소수) 표현의 한계다.
정수 자리에서도 다르다. round(0.5) 는 0, round(1.5) 는 2 다. 파이썬은 애매한 절반을 짝수 쪽으로 보낸다(은행가 반올림).
발문이 중간 단계의 반올림을 지정하면 그 지시를 따른다. 그런 지시가 없다면 중간 계산의 정밀도를 유지하고 최종 결과를 지정한 자릿수로 출력한다.
value = 3.14159
print(round(value, 3))
print(f"{value:.3f}")
print(f"{2.5:.0f}", f"{3.5:.0f}")자리수를 정확히 맞출 때는 f-string. 중간 반올림이 따로 지정되지 않았다면 최종 결과에서 자릿수를 맞춘다.
v = 0.0114567 에 대해 ① round(v, 2) ② f"{v:.2f}" ③ round(1234.5678, 2) ④ round(2.675, 2) ⑤ f"{1.5:.2f}" ⑥ round(0.5) 와 round(1.5) 를 한 줄에 출력하세요.
들여쓰기: Tab · 편집기에서 나가기: Esc 다음 Tab
실행 결과
실행하면 코드가 출력한 내용이 여기에 나타나요.
막혔을 때
풀이와 비교하기
내 코드와 한 줄씩 비교해 보세요. 풀이를 보는 것만으로 완료되지는 않아요.
v = 0.0114567
print(round(v, 2))
print(f"{v:.2f}")
print(round(1234.5678, 2))
print(round(2.675, 2))
print(f"{1.5:.2f}")
print(round(0.5), round(1.5))