디폴트로 소수점 이하 28번째 자리까지 고정소수점 수 연산을 제공
자릿수를 더 늘릴 수도 있다.
반올림 처리 정확성도 증가
from decimal import Decimal
rate = Decimal('1.45')
seconds = Decimal(3*60 +42)
cost = rate * seconds / Decimal(60)
print(cost)
5.365
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