On Apr 11, 11:13 am, Ivan Illarionov <[EMAIL PROTECTED]> wrote: > > Shorter version: > def round3k(x): > return x % 1 != 0.5 and round(x) or round(x / 2.) * 2.
Strangely, a "faster" version is: def fast_round(x): if x % 1 != 0.5: return round(x) return 2.0*round(x/2.0) > > nums = [ 0, 2, 3.2, 3.6, 3.5, 2.5, -0.5, -1.5, -1.3, -1.8, -2.5, 0.6, > 0.7 ] > rnums = [ 0, 2, 3.0, 4.0, 4.0, 2.0, -0.0, -2.0, -1.0, -2.0, -2.0, 1.0, > 1.0 ] You shouldn't remove assertions in the smaller version. :-P > > for num, rnum in zip(nums, rnums): > assert even_round(num) == rnum, '%s != %s' % (even_round(num), > rnum) > print num, '->', even_round(num) > > It makes sense to add `from __future__ import even_round` to Python > 2.6. -- http://mail.python.org/mailman/listinfo/python-list