[Tutor] (no subject)
Steven D'Aprano
steve at pearwood.info
Sat Feb 4 13:17:51 CET 2012
Debashish Saha wrote:
[...]
> why did i get different values for the same input?
Please choose a sensible subject line when posting.
The problem is with the division. Watch:
py> 21/2
10
py> 21.0/2
10.5
By default, division in Python 2 is integer division: any remainder is
ignored. To use floating point division, you need to make one of the arguments
be a float.
In your function, you have division y/5. When y is 11, 11/5 gives 2 exactly.
If y is 11.0, you get 2.2 (and a tiny bit, due to rounding).
This is confusing, so in Python 3 division works more like you expect, and you
don't have to worry about this nonsense. Also, starting in Python 2.4, you can
get the new, calculator-like behaviour by using a special command to change
the interpreter:
py> 11/5
2
py> from __future__ import division
py> 11/5
2.2000000000000002
My advice is to always use "from __future__ import division" at the start of
your programs.
--
Steven
More information about the Tutor
mailing list