I don't think the problem is with Nim. It's highly likely with floating point. Unless you want to play with arbitrary precision FP you'll have to live with the fact that while FP can represent mildly large integers it doesn't offer precision with fractions.
Btw, that you use only up to 2 decimal places in your code suggests that your project might be about finance/trading or similar, i.e. about currency values. Should that be the case I strongly advise you to use integer arithmetic and to work with cents (or, should it be required as in some financial fields, with tenths of cents).