New submission from Stefan Krah <stefan-use...@bytereef.org>: Hi,
to_integral() should behave like quantize() for negative exponents: "Otherwise (the operand has a negative exponent) the result is the same as using the quantize operation using the given operand as the left-hand-operand, 1E+0 as the right-hand-operand, and the precision of the operand as the precision setting. The rounding mode is taken from the context, as usual." There are some corner cases where this matters: >>> from decimal import * >>> c = Context(prec=1, Emin=-1, Emax=1, traps=[]) >>> d = Context(prec=4, Emin=-1, Emax=1, traps=[]) >>> >>> c.to_integral(Decimal("999.9")) Decimal('1000') >>> d.quantize(Decimal("999.9"), Decimal("1e0")) Decimal('NaN') Indeed, decNumber returns NaN for to_integral(). This is an odd situation, since for the result it is possible to exceed the precision but not Emax: >>> c = Context(prec=3, Emin=-3, Emax=3, traps=[]) >>> d = Context(prec=4, Emin=-3, Emax=3, traps=[]) >>> c.to_integral(Decimal("999.9")) Decimal('1000') >>> d.quantize(Decimal("999.9"), Decimal("1e0")) Decimal('1000') The specification is on the side of decNumber, but I wonder if this is an oversight. ---------- components: Library (Lib) messages: 127986 nosy: mark.dickinson, skrah priority: normal severity: normal status: open title: decimal.py: to_integral() corner cases type: behavior versions: Python 3.3 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue11128> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com