Integer division

Hamish Moffatt hamish at cloud.net.au
Thu Jun 7 15:20:40 CEST 2007


jm.suresh at no.spam.gmail.com wrote:
> On Jun 7, 2:15 pm, Hamish Moffatt <ham... at cloud.net.au> wrote:
>> jm.sur... at no.spam.gmail.com wrote:
>>> Hello all,
>>>  I have two integers and I want to divide one by another, and want to
>>> get an integer result which is the higher side whenever the result is
>>> a fraction.
>>>  3/2 => 1 # Usual behavior
>>>  some_func(3, 2) => 2 # Wanted
>>> Any easier solution other than int(math.ceil(float(3)/2))
>> The normal solution is to add (divisor-1) to the dividend before division.
>>
>> Ie ceil(3/2) = floor((3+(2-1))/2) = 2. Correct.
>> But ceil(4/2) = floor((4+(2-1))/2) = 2 also. Correct.
> 
> What about this?
> 
>>>> def div_ceil(a, b):
> ...     if a%b:
> ...         return ((a/b)+1)
> ...     else:
> ...         return (a/b)

Yes, although it's not as short or as fast (probably as my version):

def div_ceil(a, b):
     return ((a+(b-1))/b)



Hamish



More information about the Python-list mailing list