round down to nearest number

Ian Kelly ian.g.kelly at gmail.com
Fri Feb 10 01:21:31 EST 2012


On Thu, Feb 9, 2012 at 8:36 PM, MRAB <python at mrabarnett.plus.com> wrote:
> On 10/02/2012 02:25, noydb wrote:
>>
>> That {>>>  (3219 + 99) // 100} doesnt work if the number is other then
>> 4 digits.
>>
>>
>> (for rounding up to nearest 100):
>>>>>
>>>>>  (3219 + 99)//100
>>
>> 33
>>>>>
>>>>>  (3289 + 99)//100
>>
>> 33
>>>>>
>>>>>  (328678 + 99)//100
>>
>> 3287
>>>>>
>>>>>  (328 + 99)//100
>>
>> 4
>
>
>>>> (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

A more consistent alternative is to negate the number, round down, and
then negate again.

>>> -(-(3300.5) // 100 * 100)
3400.0

Cheers,
Ian



More information about the Python-list mailing list