[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)

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