[Python-checkins] cpython (2.7): Issue #12005: clarify behaviour of % and // for Decimal objects.
mark.dickinson
python-checkins at python.org
Sun Nov 18 11:21:02 CET 2012
http://hg.python.org/cpython/rev/290f3b75480f
changeset: 80487:290f3b75480f
branch: 2.7
parent: 80485:eba28506eed3
user: Mark Dickinson <mdickinson at enthought.com>
date: Sun Nov 18 10:20:28 2012 +0000
summary:
Issue #12005: clarify behaviour of % and // for Decimal objects.
files:
Doc/library/decimal.rst | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/Doc/library/decimal.rst b/Doc/library/decimal.rst
--- a/Doc/library/decimal.rst
+++ b/Doc/library/decimal.rst
@@ -375,6 +375,29 @@
compared, sorted, and coerced to another type (such as :class:`float` or
:class:`long`).
+ There are some small differences between arithmetic on Decimal objects and
+ arithmetic on integers and floats. When the remainder operator ``%`` is
+ applied to Decimal objects, the sign of the result is the sign of the
+ *dividend* rather than the sign of the divisor::
+
+ >>> (-7) % 4
+ 1
+ >>> Decimal(-7) % Decimal(4)
+ Decimal('-3')
+
+ The integer division operator ``//`` behaves analogously, returning the
+ integer part of the true quotient (truncating towards zero) rather than its
+ floor, so as to preseve the usual identity ``x == (x // y) * y + x % y``::
+
+ >>> -7 // 4
+ -2
+ >>> Decimal(-7) // Decimal(4)
+ Decimal('-1')
+
+ The ``%`` and ``//`` operators implement the ``remainder`` and
+ ``divide-integer`` operations (respectively) as described in the
+ specification.
+
Decimal objects cannot generally be combined with floats in
arithmetic operations: an attempt to add a :class:`Decimal` to a
:class:`float`, for example, will raise a :exc:`TypeError`.
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list