http://qs1969.pair.com?node_id=222415


in reply to Math::SnapTo

Ah. My favorite here is the snap_units() function. There was a time when I was playing around with rounding fractions of stock shares -- to the nearest 1/8 or 1/16 value -- before the exchanges I was focused upon switched to arbitrary decimal representations of stock shares.

In the CB, tye suggested the following change in snap_units() to avoid potential rounding errors:

from:

my $factor = 1/$units;
to:
my $factor = int( 1/$units + 0.5 );

The drawback is that for fractional cases, $units must be 1/N, where N is an integer. I'm not super clear on the potential rounding errors; nor am I clear on the potential utility of arbitrary $units. Perhaps certain people can elucidate for our edification.

Matt

P.S. For some prior discussion of this stuff, check out Fix floats like you do in your head.

Replies are listed 'Best First'.
Re: Re: Math::SnapTo
by tachyon (Chancellor) on Dec 27, 2002 at 07:35 UTC

    As it happens Math::Round offers the nearest(UNITS, NUM) function that does exactly this. As the snap_basic() function is legacy dross and significant figures are handled by Math::SigFigs I have decided to delete this module as it does not offer anything not already available. This is a pity as I really liked the name. See Fix floats like you do in your head for more discussion and rationale.

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print