you cannot win this game trying to make business conform calculations with the use of float or double, this is a well known issue. That simply because it is not possible to store decimal value exactly in binary form which is used in float and double. So to fix this issue at all, you have to create your own numeric class with all methods and operations like add or multiply on it. All other is only working on the sympthoms to minimiue their occurences.
The question for me here in Mirc is: Where do you need those exact calculations for operating with the program? MSL was designed for Mirc internal programming, not for using is elsewhere.