There is a strange behavior I cannot understand. Agreed that float point number are approximations, so even operations that are obviously returning a number without decimal
Mark's answer is correct in that it is the conversion between nativefloat and float32/float64.
This is covered in the CLR ECMA spec but David Notario explains this far better than I could.