[Mono-list] Maths

Fergus Henderson fjh@cs.mu.oz.au
Tue, 10 Feb 2004 05:23:53 +1100


On 09-Feb-2004, Jochen Wezel <jwezel@compumaster.de> wrote:
> Has anybody seen that behaviour yet which is produced by MS .Net?
> 
> When rounding doubles to integer, there is a rounding error:
>         Console.WriteLine(Convert.ToInt32(1.5)) 'is 2  - should be 2
>         Console.WriteLine(Convert.ToInt32(2.5)) 'is 2  - should be 3

What makes you think that is an error?

The MS docs say "If value is halfway between two whole numbers, the even
number is returned; that is, 4.5 is converted to 4, and 5.5 is converted
to 6.".  So this is behaving as intended.

If you want System.Math.Floor(Num + 0.5), then you know where to find it :)

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.