[Haskell-cafe] Re: Why 'round' does not just round numbers ?

Bart Massey bart at cs.pdx.edu
Tue Oct 28 12:07:12 EDT 2008


Lennart Augustsson <lennart <at> augustsson.net> writes:
> On Mon, Oct 27 2008, Bart Massey <bart <at> cs.pdx.edu> wrote:
> > I think given that the Haskell 98 Report is pretty
> > explicit about the behavior of round, we're stuck with
> > it, but I don't like it.  It's yet another tiny
> > impediment to Haskell newbies, as demonstrated by the
> > original post.
> 
> You're assuming newbies from a bad educational system that
> hasn't taught them how to round properly. :)

Naw. :-)

I'm just saying that the name "round" is unfortunate, since
there's no single universally accepted mathematical
definition for it. For this reason many programming
languages either don't provide it or provide a different
version.  The names "roundHalfUp" and "roundHalfEven" are
much better: they each correspond to a well-known
mathematical function that is codified in an IEEE standards
document.

If it were up to me, I'd deprecate round in Haskell' and
make the documentation point to these other rounding
functions.

Our solution in Nickle (http://nickle.org), BTW, was to
provide floating point with user-settable mantissa precision
and a default precision of 256 bits.  For all practical
purposes we know of, this makes worrying about the edge
cases for rounding pointless.  Kahan has a nice paper on
this that I can't find right now.

Of course, this solution also makes FP computation
creepingly slow, and exposes users to occasional bugs in our
FP math library... :-)

   Bart Massey
   bart <at> cs.pdx.edu




More information about the Haskell-Cafe mailing list