Just another Perl shrine | |
PerlMonks |
Re: Math::round not rounding correctlyby ikegami (Patriarch) |
on Dec 23, 2014 at 20:44 UTC ( [id://1111233]=note: print w/replies, xml ) | Need Help?? |
15/100 is a periodic number in binary, so it can't be stored accurately as a float.
This error causes 3010*1.15 to be equal to 3461.4999999999995, which Math::Round is correctly rounding to 3461. You need to incorporate a tolerance. Since 1/2 can be stored precisely in a floating point number (0.510 = 0.12), you can use the following:
This is basically what tye did by stringifying the number, except he let Perl "choose" the factor.
In Section
Seekers of Perl Wisdom
|
|