파이썬에도 지긋지긋한 부동소수점 문제가 당연히 존재한다. 예를 들면,
def func(x):
return x - 0.1
func(1.2)
이것의 결과값은 1.1 이 나와야 하지만 실제로는 1.0999999999999999 가 출력된다.
Decimal 모듈을 사용하여 해결한다.
from decimal import Decimal
def func(x):
return float(Decimal(str(x)) - Decimal(str(0.1)))
func(1.2)
주의할 것은, Decimal() 인자에 float 를 직접 넣으면 같은 오류가 발생하니까 의미가 없고 string 타입으로 변환해야 한다는 것.