It would do so if one of the numbers was a float - 1.0/2.0 gave a float answer, 1/2 gave an integer answer.
It was also possible in recent Python versions to switch this behaviour using "from __future__ import division" so they recognised it as a ward, but it's only with the decision to allow Python 3 to make backwards compatibility breaking changes that it could be changed normally.
Well, not exactly "pretty much any language": Common Lisp, Scheme, Arc, Clojure, Haskell, Perl, and SQL all return either 1/2 or 0.5. I'm sure there are plenty of others I'm not familiar with that behave the same way.
Good point. I was thinking of the C-based languages, though to be honest I'm not sure all of them behave in the same way. I should have been more careful talking about languages, especially around here...
11 comments
[ 5.6 ms ] story [ 65.3 ms ] threadPython 3.0 whatsnew http://docs.python.org/3.1/whatsnew/3.0.html
Python 3.1 whatsnew http://docs.python.org/3.1/whatsnew/3.1.html
They're clearer, more readable, more complete and linkable. No reason to use TFA.
This wasn't there previously? Ugh.
It was also possible in recent Python versions to switch this behaviour using "from __future__ import division" so they recognised it as a ward, but it's only with the decision to allow Python 3 to make backwards compatibility breaking changes that it could be changed normally.
Not that recent, the switch has been there since 2.2 alpha 2, released 8 years ago (August 22, 2001):
In Python 2.6, if one of the arguments is a float you'll get a float result, the same is true for Ruby 1.8.
The new behavior is to return a float even if two integers are passed.
Should give arc a run for its money.