I get a better accuracy with this loop, but, in fact, we don't really care about this better accuracy, since the final monetary amount will be rounded to two decimal places anyway (although you could conceivably find start values for the error on the floating point value would propagate and make a 1 cent difference on the final rounded value). To tell the truth, I was fairly lucky here: with just 11 years, I would no longer get a Rat.
Please tell me you don't work on financial applications. This would be unacceptable behavior for any application in my purview.
(I've recently worked on financial applications. "It doesn't matter" and "it doesn't happen that often" is doubly unacceptable if you care about auditing your finances or if you process more than a few thousand values.)