On 2013-10-10, Ian Kelly <ian.g.ke...@gmail.com> wrote: > On Thu, Oct 10, 2013 at 11:48 AM, Neil Cerutti <ne...@norwich.edu> wrote: >> Woah. I thought I was going by what the docs say: >> >> Python fully supports mixed arithmetic: when a binary >> arithmetic operator has operands of different numeric types, >> the operand with the ?narrower? type is widened to that of the >> other, where integer is narrower than floating point, which is >> narrower than complex. Comparisons between numbers of mixed >> type use the same rule. [2] The constructors int(), float(), >> and complex() can be used to produce numbers of a specific >> type. >> >> [...] >> >> [2] Not for complex numbers. Instead convert to floats using >> abs() if appropriate. >> >> I guess the "if appropriate" part eluded my eye. When *is* it >> appropriate? Apparently not during an equal test. > > If you click on the footnote, it takes you to: > > [2]As a consequence, the list [1, 2] is considered equal to [1.0, > 2.0], and similarly for tuples. > > The text that you have mistakenly identified as the footnote is > actually part of the key to the "Notes" column of the numeric > operations table, where it is referred to by the "x % y" and > "divmod(x, y)" operations. Specifically, it warns of this error: > >>>> 3j % 2j > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: can't mod complex numbers.
Doh! Thanks, for that, and for the corrections. I could have avoided all this by testing it correctly in the REPL, too. I'll click on those footnotes instead of scanning to them from now on. -- Neil Cerutti -- https://mail.python.org/mailman/listinfo/python-list