in reply to Rounding off numbers

I knocked up a module, probably my first ever, to do rounding. I used POSIX::ceil() and POSIX::floor() to a recipe I saw in a C text book. Written before I knew about strict and warnings, I'm afraid; I'll have to revisit it one day.

package Rounders; use Exporter; @ISA = ('Exporter'); @EXPORT = qw(rndZero rndPlaces); use Carp; use POSIX qw(ceil floor pow); sub rndZero { my($val) = shift; my $rounded = $val < 0 ? POSIX::ceil($val - 0.5) : POSIX::floor($val + 0.5); return $rounded; } sub rndPlaces { my($val, $places) = @_; my $rounded = rndZero($val * POSIX::pow(10.0, $places)) / POSIX::pow(10.0, $places); return $rounded; } 1;

Calling like this

$toNearest100 = rndPlaces(1234.56, -2);

would result in $toNearest100 getting a value of 1200.

Cheers,

JohnGG