Python은 부동소수점 방식으로 표현하기 때문에, 실수 연산의 결과에 작은 오차가 생긴다(근사치를 사용)
일반적으로는 큰 문제가 없지만, 조건문을 사용할 때 아래와 같은 문제가 발생할 수 있다.
x = 0.1 + 0.2
# x = 0.300000000000004
if x == 0.3:
print("Same")
else:
print("Diff")
# Diff
# solution
import sys
small_val = sys.float_info.epsilon
if abs(x) - 0.3 < small_val:
print("Same")
else:
print("Diff")
# Same
시스템에서 사용하는 작은 값을 하나 선언하고, 그 값을 이용해서 동일한지를 판단할 수 있다.
'당당한 프로그래밍 > 파이썬' 카테고리의 다른 글
[Python] 반복문 소요 시간 체크 (feat. tqdm) (0) | 2022.02.19 |
---|---|
[Python] 파이썬 변수 반복 생성 (feat. for 문) (0) | 2022.02.03 |
[Python] *args 와 **kwargs (0) | 2021.10.20 |
[Python] 올림, 내림, 반올림 (0) | 2021.03.15 |
[Python] 평균, 분산, 표준편차 계산하기 (0) | 2021.03.09 |