in reply to OT: Integer rounding?

You might get some help from this Q&A.

Update:
Doing it by hand, I'd do:

sub round_to_nearest { my ($n, $scale) = @_; int(($n + $scale/2)/$scale) * $scale; }

The PerlMonk tr/// Advocate

Replies are listed 'Best First'.
Re: Re: OT: Integer rounding?
by flyingmoose (Priest) on Mar 22, 2004 at 21:43 UTC
    A few sources:

    perlfaq4

    sub round { my($number) = shift; return int($number + .5); }

    perldoc -f int

    int Returns the integer portion of EXPR. If EXPR is omitted, uses "$_". You should not use this function for rounding: one because it truncates towards "0", and two because machine representations of floating point numbers can sometimes produce counterintuitive results. For example, "int(-6.725/0.025)" produces -268 rather than the correct -269; that's because it's really more like -268.99999999999994315658 instead. Usually, the "sprintf", "printf", or the "POSIX::floor" and "POSIX::ceil" functions will serve you better than will int().