On 9/4/06, **Sebastian Haase** <haase@msg.ucsf.edu> wrote:

That does look like a bug.

>>> array([66]).round(-1)

array([60])

>>> array([66.]).round(-1)

array([ 70.])

I suspect it is related to the integer data type of the first example. The code probably does something like this:

round(66/10)*10

and 66/10 == 6 in integer arithmetic.

Chuck

Don't recall.

Paulo J. S. Silva wrote:

> Once again, the information that singed zero is part of IEEE standard is

> in the paper I cited in my last message.

>

> It is very important to be able to compute the sign of an overflowed

> quantity in expressions like 1/x when x goes to zero.

>

> Best,

>

> Paulo

Hi,

This is all very interesting ( and confusing (to me, maybe others) at

the same time ...) ...

Question 0: Are you sure this is not a bug ?

>>> N.array([66]).round(-1)

[60]

That does look like a bug.

>>> array([66]).round(-1)

array([60])

>>> array([66.]).round(-1)

array([ 70.])

I suspect it is related to the integer data type of the first example. The code probably does something like this:

round(66/10)*10

and 66/10 == 6 in integer arithmetic.

Chuck

>>> N.array([66.2]).round(-1)

[ 70.]

Question 1: Was this way of round already in Numeric and /or in numarray ?

Don't recall.

Question 2: Does this need to be better documented (complete and

corrected(!) docstrings - maybe a dedicated wiki page ) !?

This is related to "How does Matlab or IDL or others do rounding ?" -

This would at least determine how many people would be surprised by this.

(I would say that *if* Matlab rounds the same way, we might need less

documentation ...)