[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rounding errors



James Kuyper wrote:
> 
> Paul van Delst wrote:
> >
> > Randall Skelton wrote:
> > >
> > > On Fri, 27 Apr 2001, Liam E. Gumley wrote:
> > >
> > > > This is a subtle but important point. DOUBLE() is a type conversion
> > > > function, and
> > > >
> > > > a = double(2.348339)
> > > >
> > > > shows a FLOAT argument being converted to a DOUBLE. The safest way to
> > > > 'cast' a double variable is
> > > >
> > > > a = 2.348339d
> > > [snip]
> > >
> > > Wow... I am glad that I have now learned that particular 'IDL feature'
> > > early on in my PhD.  Just yesterday, I convinced the department that we
> > > really need a few good IDL programming books as the current
> > > 'learning-by-fire' approach could have some unfortunate consequences ;)
> >
> > This "feature" has absolutely *nothing* to do with IDL. The same thing occurs in other
> > languages, e.g. Fortran, C, etc. Floating point numbers, in general, cannot be represented
> > exactly and you have to keep that in mind when writing code
> 
> I think you're misunderstanding the "feature" of IDL that surprised me
> as much as it surprised Randall and Liam. This has everything to do with
> IDL, and nothing to do with expecting exact representation of a
> finite-length decimal fraction. By default, in C 2.348339 represents a
> double precision number, not a single precision one, and I'd never
> realized that the IDL convention was different.

Ahh, I see. I guess it depends on what you started with. I code in Fortran mostly so when
I think "default floating point number" I think single-precision. In Fortran at least (and
by association IDL??), that convention _probably_ grew out of memory limitations of
computers and whatnot back in olden day. Nowadays it (mostly) doesn't matter I guess. 

I wonder what other languages use as a default? (e.g. Matlab sticks everything in double
doesn't it? Probably strings as well.... :o)

paulv

-- 
Paul van Delst           A little learning is a dangerous thing;
CIMSS @ NOAA/NCEP        Drink deep, or taste not the Pierian spring;
Ph: (301)763-8000 x7274  There shallow draughts intoxicate the brain,
Fax:(301)763-8545        And drinking largely sobers us again.
                                         Alexander Pope.