Kaydet (Commit) 1ea7c756 authored tarafından Fred Drake's avatar Fred Drake

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

updates by Tim Peters, markup by FLD.
üst 9263e78f
...@@ -178,8 +178,12 @@ class instances are callable if they have a \method{__call__()} method. ...@@ -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 ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment