There are some differences between casting to an integral type and using Math.Floor:
When casting to an integral type, you'll end up with an integral type (obviously). So if you want to keep the number as a double, using Floor is easier.
As a consequence of 1, casting will not work correctly if the given number is too large to be represented by the given integral type (a double can represent much larger numbers than a long).
Floor rounds towards negative infinity. Casting rounds towards zero.