1. round() 함수 주의사항
1.1 round()는 무조건 올림이 아니다
파이썬의 round()는 소수점이 .5일 경우 가장 가까운 짝수로 반올림하는 은행가 반올림 방식을 사용합니다.
1.2 .5에서 직관과 다른 결과가 나온다
.5라고 해서 항상 올림되지 않습니다 !!
round(0.5) → 0
round(1.5) → 2
round(2.5) → 2
round(3.5) → 4만약 2.675 → 2.68로 반올림을 기대할 때,
round(2.675, 2) # 2.67이처럼 round를 사용하면 우리가 기대한 결과가 나오지 않습니다. 이유는? 부동소수점 오차 때문 파이썬은 내부적으로
2.675 ≈ 2.674999999...다음과 같이 저장하기 때문입니다.
1.3 알고리즘 문제에서는 사용을 피하는 것이 안전하다
반올림 결과가 상황에 따라 달라져 오답의 원인이 될 수 있으므로, 올림이 필요할 때는 아래와 같은 정수 연산을 사용합니다.
(x + y - 1) // y # 올림 나눗셈2. math.inf로 최댓값/최솟값을 초기화하자
반복문으로 최댓값을 찾을 때는 → 처음에 아주 작은 값 최솟값을 찾을 때는 → 처음에 아주 큰 값 으로 초기화해야 첫 비교부터 정상적으로 갱신이 됩니다.
import math
max_val = -math.inf
min_val= math.inf이렇게 math.inf를 사용하면 입력 범위를 미리 알지 않아도, 어떤 숫자가 와도 비교 가능하게 됩니다. (정수와 실수 모두에서 안전)