Why do you use round
here? I don't think you need it. Or can your input numbers have more than two decimals? I think you said that there could be only two decimal places.
Another point is that I don't see any reason to print incremental results each time through the look (except possibly for debugging purposes). Put the print statement after the end of the foreach loop.
And you might want to use printf instead of print in this specific case. In fact, using printf might be the only change that you need in your original code, as shown with this example under the Perl debugger:
DB<1> @nr=('32431.19', '20', '-10', '-31800');
DB<3> $x += $_ for @nr;
DB<4> print $x
DB<5> printf '%.2f', $x;