in reply to A simple rounding question, but can't get it!
What is probably happening is that as a float, 20.875 is being represented as "20.8749999999...", which, when rounded to 2 decimal places, is being represented as 20.87. (Though, theorhetically, 0.875 should be able to be represented exactly by decimal fractions, but there's still some floating point math).
A general way to round to some place can be done by the following:
my $rounded = int ( $value / ( 10**$round ) + 0.5 ) * ( 10**$round );
where $round is the digit that you want to round to, 0 being the 1's place, 1 the tens, and 1 the tenths place. (and so forth). You'll want to do something with $round = 2 in your case here.

Dr. Michael K. Neylon  mneylonpm@masemware.com

"You've left the lens cap of your mind on again, Pinky"  The Brain
"I can see my house from here!"
It's not what you know, but knowing how to find it if you don't know that's important
