Like other computer languages, the default for perl is to store floating point numbers in binary floating point. This doesn't exactly match up with decimal floating point. There is some round off error going back and fourth, and that's what you are seeing.
You can
- Round on display, using something like printf "%6.2f"
- Use integer arithmetic, which doesn't have this problem. You can do your work in integers, then scale at the end.
- Use a module which supports greater (or infinite) precision arithmatic