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.