In Python 2, returning an int where a float was expected could break existing code (since in Python 2 int and float behave differently under division), but in Python 3 int is virtually a subclass of float (see PEP 3141). So it's not a crazy idea.
However, it's a bit of a slippery slope. Pretty much everything in the math module always returns a float. Or do you propose that math.sin(0) also return 1 instead of 1.0? Also, how important is it to use this? I suspect the only reason it exists as a builtin is that it handles -0.0 correctly. But that's really only of interest to people doing serious floating point stuff. For everyone else, it's pretty much this one-liner: def copysign(x, y): return abs(x) if y >= 0 else -abs(x) On Thu, Nov 28, 2019 at 4:20 PM Marein <python-id...@marein.net> wrote: > The math.copysign(x, y) function always returns a float, even when the > given x is an int, i.e. math.copysign(3, -1) gives -3.0. This is documented > behaviour, but I find it somewhat surprising given that the name suggests > that it only copies a sign, and it's also annoying in situations when an > int is strictly needed (i.e. as the step argument to range), requiring an > additional cast. > > I'm interested to hear whether it might be a good idea to preserve the > int/float type of the argument in math.copysign. > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/OD5EVP3KAQWZ7W72U4HZI22OOSQOPDO4/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/YRDOZP6BBLHO5YHKZKYEQYNTKKJW6BDJ/ Code of Conduct: http://python.org/psf/codeofconduct/