In cases where you have to convert from float/double to decimal you should use an explicit rounding method, not just a raw cast.