On Tue, 16 May 2006, Miguel Estrada wrote: > def function(): > x = int(raw_input("Enter value of x: ")) > y = int(raw_input("Enter value of y: ")) > z = x / y > print "The value of z is", z, "unit of measurement" > > > Now, say, user input: > > x = 200 > y = 1000 > > The value returned will be '0'. > > My question: What is the proper way of writing the operation so that if > z = x /y, the result would be '0.20' instead of just '0'?
This is a frustrating design choice in Python, which I believe is on the list of Guido's regrets and will be corrected in Python 3.0. Where both operands are integers, Python division truncates to and integer result, thus: >>> x = 200 >>> y = 1000 >>> z = x/y >>> z 0 But if either operand is a float, you get the results that you'd expect: >>> x = 200.0 >>> y = 1000 >>> z = x/y >>> z 0.20000000000000001 >>> (the "000000..1" is rounding error from the basic impossibility of representing 1/5 in a binary system) You can include the following in your program (I often do) if you want division to operate the way you expect: >>> from __future__ import division >>> from __future__ import division >>> x = 200 >>> y = 1000 >>> z = x/y >>> z 0.20000000000000001 >>> _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor