On Feb 10, 4:58 am, Arnaud Delobelle <arno...@gmail.com> wrote: > On 10 February 2012 06:21, Ian Kelly <ian.g.ke...@gmail.com> wrote: > > > > > > >>>>> (3219 + 99) // 100 * 100 > >> 3300 > >>>>> (3289 + 99) // 100 * 100 > >> 3300 > >>>>> (328678 + 99) // 100 * 100 > >> 328700 > >>>>> (328 + 99) // 100 * 100 > >> 400 > > >> Those are all rounded up to the nearest 100 correctly. > > > One thing to be aware of though is that while the "round down" formula > > works interchangeably for ints and floats, the "round up" formula does > > not. > > >>>> (3300.5 + 99) // 100 * 100 > > 3300.0 > > I'm surprised I haven't seen: > > >>> 212 - (212 % -100) > > 300 > > Here's a function that: > * rounds up and down > * works for both integers and floats > * is only two operations (as opposed to 3 in the solutions given above) > > >>> def round(n, k): > > ... return n - n%k > ...>>> # Round down with a positive k: > > ... round(167, 100) > 100>>> round(-233, 100 > > ... ) > -300>>> # Round up with a negative k: > > ... round(167, -100) > 200>>> round(-233, -100) > -200 > >>> # Edge cases > > ... round(500, -100) > 500>>> round(500, 100) > 500 > >>> # Floats > > ... round(100.5, -100) > 200.0>>> round(199.5, 100) > > 100.0 > > -- > Arnaud- Hide quoted text - > > - Show quoted text -
Thanks! Covers all bases, good. -- http://mail.python.org/mailman/listinfo/python-list