[Numpy-discussion] Floor divison on int returns float

T J tjhnson at gmail.com
Tue Apr 12 20:57:59 EDT 2016


Thanks Eric.

Also relevant: https://github.com/numba/numba/issues/909

Looks like Numba has found a way to avoid this edge case.



On Monday, April 4, 2016, Eric Firing <efiring at hawaii.edu> wrote:

> On 2016/04/04 9:23 AM, T J wrote:
>
>> I'm on NumPy 1.10.4 (mkl).
>>
>>  >>> np.uint(3) // 2   # 1.0
>>  >>> 3 // 2   # 1
>>
>> Is this behavior expected? It's certainly not desired from my
>> perspective. If this is not a bug, could someone explain the rationale
>> to me.
>>
>> Thanks.
>>
>
> I agree that it's almost always undesirable; one would reasonably expect
> some sort of int.  Here's what I think is going on:
>
> The odd behavior occurs only with np.uint, which is np.uint64, and when
> the denominator is a signed int.  The problem is that if the denominator is
> negative, the result will be negative, so it can't have the same type as
> the first numerator.  Furthermore, if the denominator is -1, the result
> will be minus the numerator, and that can't be represented by np.uint or
> np.int.  Therefore the result is returned as np.float64.  The promotion
> rules are based on what *could* happen in an operation, not on what *is*
> happening in a given instance.
>
> Eric
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20160412/eece37f3/attachment.html>


More information about the NumPy-Discussion mailing list