How to simulate C style integer division?

Marko Rauhamaa marko at pacujo.net
Thu Jan 21 09:31:46 EST 2016


Jussi Piitulainen <jussi.piitulainen at helsinki.fi>:

> Steven D'Aprano writes:
>
>> So my guess is that the fastest, and certainly the most obvious, way
>> to get the same integer division behaviour as C99 would be:
>>
>> def intdiv(a, b):
>>     # C99 style integer division with truncation towards zero.
>>     n = a//b
>>     if (a < 0) != (b < 0):
>>         n += 1
>>     return n
>
> You should only increment if there is a (non-zero) remainder.

Maybe:

   def intdiv(a, b):
       return a // b if (a < 0) == (b < 0) else -(-a // b)


Marko



More information about the Python-list mailing list