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