L.Guo wrote:
Hi all:


I just read about definitions of Prelude [1], and noticing that.

In 6.4.6 Coercions and Component Extraction, it discribes like this:


"round x returns the nearest integer to x, the even integer if x is equidistant 
between two integers."


I think this is unresonable. then try it in GHC 6.8.3.


Prelude> round 3.5
4
Prelude> round 2.5
2


Is there any explanation about that ?


This is the same exact behavior found in the FPU of most processors, except that you usually don't notice because the rounding occurs between very small values.

The reason for doing it this way is that e.g. 2.5 is exactly between 2 and 3, and rounding *up* every time would cause an uneven bias toward 3. To counteract that effect, rounding to the nearest even integer is used, which causes the half of the x.5 values to round up, and the other half to round down.

Pete
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to