태그

2022-08-02

float 대신 decimal 을 쓰자

부동소수점 자료형 float

python 에서 소수점이 포함된 숫자는 기본적으로 float 형이다.

컴퓨터 내부 이진수로 저장하기 때문에 십진수와 다르게

대부분 아래와 같이 근사값으로 저장된다.


 >>> 1.5 * 0.009

0.013499999999999998


적당히 반올림해서 쓰면 문제가 없지만,

올림 또는 내림 시 문제가 될 수 있다.


이럴땐 Decimal 을 쓰자

>>> from decimal import Decimal

>>> Decimal('1.5') * Decimal('0.009')

Decimal('0.0135')


참고, nomalize() 로 소수점 뒤 0을 없앨 수 있다.

>>> Decimal('12.34500').normalize()

Decimal('12.345')



댓글 없음:

댓글 쓰기