[Numpy-discussion] arange and floating point arguments

Robert Kern robert.kern@gmail....
Fri Sep 14 10:54:19 CDT 2007


Ed Schofield wrote:
> Hi everyone,
> 
> This was reported yesterday as a bug in Debian's numpy package:
> 
>>>> len(numpy.arange(0, 0.6, 0.1)) == len(numpy.arange(0, 0.4+0.2, 0.1))
> False
> 
> The cause is this:
> 
>>>> ceil((0.4+0.2)/0.1)
> 7.0
> 
>>>> ceil(0.6/0.1)
> 6.0
> 
> which holds for both numpy's and the standard library's ceil().

>>> 0.6 == (0.4+0.2)
False

Consequently, not a bug.

> Using arange in this way is a fundamentally unreliable thing to do,
> but is there anything we want to do about this?

Tell people to use linspace(). Yes, it does a slightly different thing; that's
why it works. Most uses of floating point arange() can be cast using linspace()
more reliably.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco


More information about the Numpy-discussion mailing list