[Tutor] range()-like function for dealing with floats...?
Barry.Carroll at psc.com
Fri Mar 30 21:13:08 CEST 2007
> -----Original Message-----
> Date: Fri, 30 Mar 2007 19:28:51 +0200
> From: Andreas Kostyrka <andreas at kostyrka.org>
> Subject: Re: [Tutor] range()-like function for dealing with floats...?
> To: "Carroll, Barry" <Barry.Carroll at psc.com>
> Cc: tutor at python.org
> Message-ID: <20070330172848.GG5850 at andi-lap.la.revver.com>
> Content-Type: text/plain; charset=us-ascii
> * Carroll, Barry <Barry.Carroll at psc.com> [070330 19:15]:
> > Try entering "python range float" at your personal favorite search
> > engine. I tried it on Google. Here is the first entry returned:
> > ASPN : Python Cookbook : frange(), a range function with float
> > ...
> > Sadly missing in the Python standard library, this function
> > allows
> > to use ranges, just as the built-in function range(), but with
> > float arguments. ...
> > aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66472
> > - 32k - Cached - Similar pages
> > There were lots of others.
> Just don't forget that floats are not evenly spaced. The hole between
> possible floats gets bigger the more you move away from zero.
> On my IA32 Linux laptop I get:
> >>> (1e+16) + 1 == (1e+16)
> >>> (1e+16) + 10 == (1e+16)
> So a frange(1e+16, (1e+16) + 1000, 1) won't work, or at best will
> result something else than what you thought it would.
> That's probably the reason why frange is not part of the standard
> library: It's not possible to define it sensible for all float ranges,
> and floats have many properties that make them fiendish. Typically,
> programming courses just ignore the problematic aspects (at best one
> learns that floats should not be used to represent money), one usually
> has to take a course on Numerics to get the details.
Andreas is right, of course. In fact, the URL I referenced above
includes a discussion of the contributor's function and ways of
mitigating (NOT eliminating) the round-off problem.
barry.carroll at psc.com
We who cut mere stones must always be envisioning cathedrals.
-Quarry worker's creed
More information about the Tutor