반응형

파이썬, 부동소숫점 계산 정확도 보장하기

 

글. 수알치 오상문

 

아래 파이썬 예제를 보면 단순히 부동소숫점 계산을 이용하면 원하지 않던 엉뚱한 결과를 발생시킬 수 있음을 볼 수 있습니다. 이런 경우에 부동소수점 계산 결과의 정확도를 높이려면 Decimal을 이용합니다.

 

[파이썬 예제]

# 아래 세 개는 모두 False

print(1.1 + 0.1 == 1.2)
print(1.10 + 0.10 == 1.20)
print(1.100000000000000000000 + 0.100000000000000000000 == 1.200000000000000000000)


# True 결과를 얻고 싶으면 Decimal 이용
from decimal import Decimal

print(Decimal('1.1') + Decimal('0.1') == Decimal('1.2')) # 출력: True
 
 

[실행 결과]

False

False

False

True

 

반응형

+ Recent posts