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.