Converting double to integer using cast and convert statement
Check out the code below.
double d = 13.6;
int i1 = Convert.ToInt32(d);
int i2 = (int)d;
if (i1 == i2)
{ Console.WriteLine("Equal"); }
else
{ Console.WriteLine("Not Equal"); }
The output of the above program would be “Not
Equal”. The reasons being different
rounding policy for in convert and cast operator.
In the above program the actual value of i1 is 14 and i2
is 13 convert.ToInt32 uses Math.Round and the direct cast
uses Math.floor for rounding values to integer from
double.
It's always better to call Math.Ceiling() or Math.Floor()
(or Math.Round with MidpointRounding that meets our
requirements)
int i1 = Convert.ToInt32( Math.Ceiling(d) );
int i2 =
(int) Math.Ceiling(d);
Vikram