Are there any reasons one would prefer to use Math.Floor vs casting to an integral type?
double num; double floor = Math.Floor(num);
OR
Even if you're only dealing with positive values, a double value doesn't always fit in a long.
double
long
See ranges of long and double on MSDN.