mirror of
https://github.com/python/cpython.git
synced 2025-11-11 22:55:08 +00:00
Reflect recent patch for float % and divmod() by Tim Peters. Content
updates by Tim Peters, markup by FLD.
This commit is contained in:
parent
9263e78ff2
commit
1ea7c75687
2 changed files with 16 additions and 5 deletions
|
|
@ -178,8 +178,12 @@ class instances are callable if they have a \method{__call__()} method.
|
||||||
operand types, the rules for binary arithmetic operators apply. For
|
operand types, the rules for binary arithmetic operators apply. For
|
||||||
plain and long integers, the result is the same as
|
plain and long integers, the result is the same as
|
||||||
\code{(\var{a} / \var{b}, \var{a} \%{} \var{b})}.
|
\code{(\var{a} / \var{b}, \var{a} \%{} \var{b})}.
|
||||||
For floating point numbers the result is the same as
|
For floating point numbers the result is \code{(\var{q}, \var{a} \%{}
|
||||||
\code{(math.floor(\var{a} / \var{b}), \var{a} \%{} \var{b})}.
|
\var{b})}, where \var{q} is usually \code{math.floor(\var{a} /
|
||||||
|
\var{b})} but may be 1 less than that. In any case \code{\var{q} *
|
||||||
|
\var{b} + \var{a} \%{} \var{b}} is very close to \var{a}, if
|
||||||
|
\code{\var{a} \%{} \var{b}} is non-zero it has the same sign as
|
||||||
|
\var{b}, and \code{0 <= abs(\var{a} \%{} \var{b}) < abs(\var{b})}.
|
||||||
\end{funcdesc}
|
\end{funcdesc}
|
||||||
|
|
||||||
\begin{funcdesc}{eval}{expression\optional{, globals\optional{, locals}}}
|
\begin{funcdesc}{eval}{expression\optional{, globals\optional{, locals}}}
|
||||||
|
|
|
||||||
|
|
@ -583,9 +583,16 @@ The integer division and modulo operators are connected by the
|
||||||
following identity: \code{x == (x/y)*y + (x\%y)}. Integer division and
|
following identity: \code{x == (x/y)*y + (x\%y)}. Integer division and
|
||||||
modulo are also connected with the built-in function \function{divmod()}:
|
modulo are also connected with the built-in function \function{divmod()}:
|
||||||
\code{divmod(x, y) == (x/y, x\%y)}. These identities don't hold for
|
\code{divmod(x, y) == (x/y, x\%y)}. These identities don't hold for
|
||||||
floating point and complex numbers; there a similar identity holds where
|
floating point and complex numbers; there similar identities hold
|
||||||
\code{x/y} is replaced by \code{floor(x/y)}) or
|
approximately where \code{x/y} is replaced by \code{floor(x/y)}) or
|
||||||
\code{floor((x/y).real)}, respectively.
|
\code{floor(x/y) - 1} (for floats),\footnote{
|
||||||
|
If x is very close to an exact integer multiple of y, it's
|
||||||
|
possible for \code{floor(x/y)} to be one larger than
|
||||||
|
\code{(x-x\%y)/y} due to rounding. In such cases, Python returns
|
||||||
|
the latter result, in order to preserve that \code{divmod(x,y)[0]
|
||||||
|
* y + x \%{} y} be very close to \code{x}.
|
||||||
|
} or \code{floor((x/y).real)} (for
|
||||||
|
complex).
|
||||||
|
|
||||||
The \code{+} (addition) operator yields the sum of its arguments.
|
The \code{+} (addition) operator yields the sum of its arguments.
|
||||||
The arguments must either both be numbers or both sequences of the
|
The arguments must either both be numbers or both sequences of the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue