Reflect recent patch for float % and divmod() by Tim Peters. Content

updates by Tim Peters, markup by FLD.
This commit is contained in:
Fred Drake 1999-05-06 14:46:35 +00:00
parent 9263e78ff2
commit 1ea7c75687
2 changed files with 16 additions and 5 deletions

View file

@ -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}}}

View file

@ -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