summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Dickinson <mdickinson@enthought.com>2012-11-18 10:22:05 (GMT)
committerMark Dickinson <mdickinson@enthought.com>2012-11-18 10:22:05 (GMT)
commita3f37408da2be22e2294c4bc14d23a66bb7c5570 (patch)
tree289b85d39d6a7fa82a1aa4368c51e5dd71d04cf2
parent17babc5e97f49f03e0a271b1c80f7adaf2eb5f48 (diff)
downloadcpython-a3f37408da2be22e2294c4bc14d23a66bb7c5570.zip
cpython-a3f37408da2be22e2294c4bc14d23a66bb7c5570.tar.gz
cpython-a3f37408da2be22e2294c4bc14d23a66bb7c5570.tar.bz2
Issue #12005: clarify behaviour of % and // for Decimal objects.
-rw-r--r--Doc/library/decimal.rst23
1 files changed, 23 insertions, 0 deletions
diff --git a/Doc/library/decimal.rst b/Doc/library/decimal.rst
index 919ebe4..30467c8 100644
--- a/Doc/library/decimal.rst
+++ b/Doc/library/decimal.rst
@@ -365,6 +365,29 @@ Decimal objects
compared, sorted, and coerced to another type (such as :class:`float` or
:class:`int`).
+ 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 or
instances of :class:`fractions.Fraction` in arithmetic operations:
an attempt to add a :class:`Decimal` to a :class:`float`, for