<p dir="ltr">On 28 Apr 2014 20:22, "Robert Kern" <<a href="mailto:robert.kern@gmail.com">robert.kern@gmail.com</a>> wrote:<br>
> C's rint() does not:<br>
><br>
>   <a href="http://linux.die.net/man/3/rint">http://linux.die.net/man/3/rint</a><br>
><br>
> This is because there are many integers that are representable as<br>
> floats/doubles/long doubles that are well outside of the range of any<br>
> C integer type, e.g. 1e20.</p>
<p dir="ltr">By the time you have a double integer that isn't representable as an int64, you're well into the range where all doubles are integers but not all integers are floats. "Round to the nearest integer" is already a pretty semantically weird operation for such values.</p>

<p dir="ltr">I'm not sure what the consequences of this are for the discussion but it seems worth pointing out.</p>
<p dir="ltr">> Python 3's round() can return a Python int because Python ints are<br>
> unbounded. Ours aren't.<br>
><br>
> That said, typically the first thing anyone does with the result of<br>
> rounding is to coerce it to a native int dtype without any checking.<br>
> It would not be terrible to have a function that rounds, then coerces<br>
> to int but checks for overflow and passes that through the numpy error<br>
> mechanism to be controlled.</p>
<p dir="ltr">It would help here if we had a consistent mechanism for handling integer representability errors :-).</p>
<p dir="ltr">-n</p>