diff options
author | Mark Dickinson <mdickinson@enthought.com> | 2012-11-18 10:22:05 (GMT) |
---|---|---|
committer | Mark Dickinson <mdickinson@enthought.com> | 2012-11-18 10:22:05 (GMT) |
commit | a3f37408da2be22e2294c4bc14d23a66bb7c5570 (patch) | |
tree | 289b85d39d6a7fa82a1aa4368c51e5dd71d04cf2 | |
parent | 17babc5e97f49f03e0a271b1c80f7adaf2eb5f48 (diff) | |
download | cpython-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.rst | 23 |
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 |