← retour aux snippets

decimal: contexte et précision contrôlée

Ajuster la précision globale ou locale avec localcontext.

objectif

Ajuster la précision globale ou locale avec localcontext.

code minimal

from decimal import Decimal, getcontext, localcontext
getcontext().prec = 6
with localcontext() as ctx:
    ctx.prec = 2
    x = Decimal("1") / Decimal("3")
    print(str(x) == "0.33")  # attendu: True

utilisation

from decimal import Decimal
print((Decimal("0.1") + Decimal("0.2")) == Decimal("0.3"))

variante(s) utile(s)

from decimal import Decimal, localcontext
with localcontext() as ctx:
    ctx.rounding = "ROUND_HALF_UP"
    d = (Decimal("2.5")).quantize(Decimal("1"))
    print(str(d) in ("2", "3"))  # selon arrondi

notes

  • localcontext permet des réglages temporaires sans effet global.
  • Préférez Decimal pour l’argent et les calculs exacts.