On Apr 11, 5:33 pm, bdsatish <[EMAIL PROTECTED]> wrote:
> HI Gerard,
>
> I think you've taken it to the best possible implementation. Thanks !
> On Apr 11, 5:14 pm, Gerard Flanagan <[EMAIL PROTECTED]> wrote:
>
> > In fact you can avoid the call to the builtin round:
>
> > ------------------------------------------------
>
> > 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
> > ------------------------------------------------
OK, I was too early to praise Gerard. The following version:
def myround(x):
n = int(x)
if abs(x - n) >= 0.5 and n % 2:
return n + 1 - 2 * int(n<0)
else:
return n
of Gerard doesn't work for 0.6 (or 0.7, etc.) It gives the answer 0
but I would expect 1.0 ( because 0.6 doesn't end in 0.5 at all... so
usual rules of round( ) apply)
--
http://mail.python.org/mailman/listinfo/python-list