[Numpy-discussion] bug in round with negative number of decimals
Charles R Harris
charlesr.harris at gmail.com
Sun Sep 3 20:18:37 EDT 2006
On 9/3/06, Sebastian Haase <haase at msg.ucsf.edu> wrote:
>
> Hi,
> I just learn about the existence of round().
> Is the following exposing a bug?
> >>> N.__version__
> '1.0b4'
> >>> N.array([65.0])
> [ 65.]
> >>> _.round(-1)
> [ 60.]
> >>> round(65, -1)
> 70.0
> >>> N.array([65])
> [65]
> >>> _.round(-1)
> [60]
> >>> N.array([66])
> [66]
> >>> _.round(-1)
> [60]
> >>> N.array([66.2])
> [ 66.2]
> >>> _.round(-1)
> [ 70.]
>
> 65 should round *up* to 70. (when decimals is given as -1)
> In numpy even 66 rounds down, but 66.2 rounds up ...
Numpy rounds to even.
>>> around(arange(10)*.5)
array([ 0., 0., 1., 2., 2., 2., 3., 4., 4., 4.])
i.e., when at those x.5 boundaries, round to the nearest even number. Always
rounding in the same direction biases the numbers when you have gazillions
of them. This is most likely of import when the fpu is rounding intermediate
results to register length, but numpy does it too. Floats can be weird
anyway, .15, for instance, can't be represented exactly as an ieee float. It
does tend to throw folks for a loop when they don't keep this in mind.
- Sebastian Haase
Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20060903/d5a70ed4/attachment.html>
More information about the NumPy-Discussion
mailing list