Someone recently asked me why
Math.Floor return a double? I chatted with some folks on the team and got this
You could ask the same question
about Sin, Log and all the other things on Math: they all take and return Double
and are subject to the same precision issues.
Admittedly, Math.Floor is a little
weird, because it returns a whole integer. However, it can't return any normal
integer, because Int64 can't cover the full range of Double. The only return
value that would make more sense would be Decimal.
You could make a reasonable case
that there should be Decimal versions of most or all of the methods on Math. We
should probably consider that a reasonable end-point for the long term evolution
of this class.
We are of course looking at adding
more overloads in the future.