
On Fri, Apr 29, 2011 at 3:00 AM, Nick Coghlan <ncoghlan@gmail.com> wrote: ..
decimal already works that way:
from decimal import Decimal as d nan = d("nan") nan Decimal('NaN') nan < 1 .. decimal.InvalidOperation: comparison involving NaN
decimal.getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, clamp=0, flags=[],
That's what I thought and contrary to what Robert said early in the thread. By default, decimal operations trap InvalidOperation, DivisionByZero, and Overflow: traps=[InvalidOperation, DivisionByZero, Overflow]) The advantage that decimal has over float is that user can control what is trapped:
from decimal import * with localcontext(Context(traps=[])): ... print(Decimal('NaN') < Decimal('0')) ... False