The decimal module provides support for fast correctly-rounded decimal floating point arithmetic. It offers several advantages over the float datatype:

  • Decimal is based on a floating-point model but also provide an arithmetic that works in the same way as the arithmetic that people learn at school.
  • Decimal numbers can be represented exactly. In contrast float number not have exact representations. End users typically would not expect 1.1 + 2.2 to display as 3.3000000000000003 as it does with binary floating point. In decimal floating point, 0.1 + 0.1 + 0.1 – 0.3 is exactly equal to zero. In binary floating point, the result is 5.5511151231257827e-017.

A decimal number is immutable. It has a sign, coefficient digits, and an exponent. Precision of the answer also can be adjusted.

import decimal

# Setting the precision Globally
decimal.getcontext().prec = 3

division = decimal.Decimal(72) / decimal.Decimal(7)

with decimal.localcontext() as ctx:
  # Setting precision in locally 
  ctx.prec = 3
  division = decimal.Decimal(72)