IT 상식

[Python] 부동 소수점, 소수점 연산할 때 주의 사항

728x90
반응형
  • 파이썬에서 소수점 계산값의 결과를 비교할 때 부동소수점을 주의해야 한다.
  • 컴퓨터는 이진법으로 수를 계산하기 때문에, 사람이 인지하는 숫자와 컴퓨터가 인지하는 숫자에 오차가 발생할 수 있다.

print(3.2-3.1 == 0.1)	#0.099999999999987
# False

 사람에게 3.2 - 3.1을 계산하도록 시킨다면 0.1을 답으로 제출할 것이다. 비교연산자 == 을 이용해 0.1과 비교했을 때 True를 반환할 것이다. 그러나 컴퓨터는 3.2-3.1 == 0.1의 값에 대해 False를 반환한다. 그 이유는 소수점 연산에 대해 딱 떨어지는 수가 아닌 매우 작은 수(입실론) 만큼의 오차가 발생하기 때문이다.

 

 

python 3.5 이상에서는 math 모듈을 사용해서 부동소수점 문제를 해결할 수 있다.

import math

print(math.isclose(3.2, 3.1)
#True