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