On 9/3/06, Sebastian Haase <[EMAIL PROTECTED]> 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


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/numpy-discussion

Reply via email to