** TIL at 220719
float
은 실수다.
: 실수를 컴퓨터가 표현하는 과정에서 부동소수점을 사용하기 때문에, 어떠한 값이 항상 같은 값으로 일치되지 않는다.
print(3.5 - 3.12 == 0.38) #False
위 코드의 출력값은 False
이다.
a = 3.5 - 3.12
b = 0.38
print(abs(a - b) <= 1e-10) #True
abs()
: 절대값을 구하는 함수1e-10
: 컴퓨터식 지수 표현 방식! (e =10)sys.float_info.epsilon
: 이 곳에 저장된 값은 '머신 엡실론(machine epsilon)'이다. 머신 엡실론은 반올림 오차의 상한값이며 연산한 값과 비교할 값의 차이가 머신 엡실론보다 작거나 같다면 두 실수는 같은 값이라 할 수 있다.import sys
print(abs(a - b) <= sys.float_info.epsilon) #True
import math
print(math.isclose(a, b)) # True