decimal

매일 공부(ML)·2022년 8월 24일
0

이어드림

목록 보기
126/146

정확도가 매우 중요한 경우에는 decimal을 사용하라

Decimal 클래스

  • 디폴트로 소수점 이하 28번째 자리까지 고정소수점 수 연산을 제공

  • 자릿수를 더 늘릴 수도 있다.

  • 반올림 처리 정확성도 증가

from decimal import Decimal

rate = Decimal('1.45')
seconds = Decimal(3*60 +42)
cost = rate * seconds / Decimal(60)
print(cost)
5.365

Decimal 인스턴스에 값 지정

  1. 숫자가 들어있는 str을 Decimal 생성자에 전달
print(Decimal('1.45')) # 1.45
print(Decimal(1.45)) #1.44999999999999999999999999559

내장 함수를 활용하여 반올림

from decimal import ROUND_UP

rounded = cost.quantize(Decimal('0.01'), rounding = ROUND_UP)
print(f'반올림 전: {cost} 반올림 후:{rounded}')
반올림 전: 5.365 반올림 후:5.37
#quantize메서드를 사용하면 더 저렴하게 처리 가능

rate = Decimal('0.05')
seconds = Decimal('5')
small_cost = rate * seconds / Decimal(60)
print(small_cost)
rounded = small_cost.quantize(Decimal('0.01'), rounding = ROUND_UP)
print(f'반올림 전: {small_cost} 반올림 후: {rounded}')
0.004166666666666666666666666667
반올림 전: 0.004166666666666666666666666667 반올림 후: 0.01
profile
성장을 도울 아카이빙 블로그

0개의 댓글