On Apr 11, 12:14 pm, bdsatish <[EMAIL PROTECTED]> wrote: > The built-in function round( ) will always "round up", that is 1.5 is > rounded to 2.0 and 2.5 is rounded to 3.0. > > If I want to round to the nearest even, that is > > my_round(1.5) = 2 # As expected > my_round(2.5) = 2 # Not 3, which is an odd num > > I'm interested in rounding numbers of the form "x.5" depending upon > whether x is odd or even. Any idea about how to implement it ?
------------------------------------------------ def myround(x): n = int(x) if abs(x - n) == 0.5: if n % 2: #it's odd return n + 1 - 2 * int(n<0) else: return n else: return round(x) assert myround(3.2) == 3 assert myround(3.6) == 4 assert myround(3.5) == 4 assert myround(2.5) == 2 assert myround(-0.5) == 0.0 assert myround(-1.5) == -2.0 assert myround(-1.3) == -1.0 assert myround(-1.8) == -2 assert myround(-2.5) == -2.0 ------------------------------------------------ -- http://mail.python.org/mailman/listinfo/python-list