Decimal
Type¶from decimal import Decimal, getcontext
getcontext()
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
Decimal(42)
Decimal('42')
Decimal("0.1")
Decimal('0.1')
Decimal("1e-3")
Decimal('0.001')
Decimal(0.1) # do not do this!
Decimal('0.1000000000000000055511151231257827021181583404541015625')
Decimal("0.1") + Decimal("0.2")
Decimal('0.3')
Decimal("0.1") + Decimal("0.2") == Decimal("0.3")
True
Decimal("0.10000") + Decimal("0.20000")
Decimal('0.30000')
21 + Decimal(21)
Decimal('42')
Decimal(1) / 10
Decimal('0.1')
1.0 * Decimal(42)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[16], line 1 ----> 1 1.0 * Decimal(42) TypeError: unsupported operand type(s) for *: 'float' and 'decimal.Decimal'
Decimal(2).sqrt()
Decimal('1.414213562373095048801688724')
two = Decimal(2).sqrt() ** 2
two
Decimal('1.999999999999999999999999999')
two.quantize(Decimal("0.0000"))
Decimal('2.0000')
Fraction
Type¶from fractions import Fraction
Fraction(1, 3) # 1 / 3 with "full" precision
Fraction(1, 3)
Fraction("1/3") # 1 / 3 with "full" precision
Fraction(1, 3)
Fraction("0.3333333333") # 1 / 3 with a precision of 10 significant digits
Fraction(3333333333, 10000000000)
Fraction(Decimal("0.1"))
Fraction(1, 10)
Fraction(0.1)
Fraction(3602879701896397, 36028797018963968)
Fraction(3, 2) + Fraction(1, 4)
Fraction(7, 4)
Fraction(5, 2) - 2
Fraction(1, 2)
3 * Fraction(1, 3)
Fraction(1, 1)
Fraction(3, 2) * Fraction(2, 3)
Fraction(1, 1)
10.0 * Fraction(1, 100) # do not do this!
0.1
format(10.0 * Fraction(1, 100), ".50f")
'0.10000000000000000555111512312578270211815834045410'