but how do I get to the decimal cents in the first place?

Assuming you start with a string, you have to avoid triggering perl's implied parse to a floating point number.

my $input= "2.26"; my ($whole, $frac)= split /\./, $input; $frac //= ''; length $frac < 2 or die "would lose precision on .$frac"; $frac .= '0'x(2 - length($frac)); my $cents= "$whole$frac";

Yes, it's ugly. I'm sure there is some clever way to do this with a regex that runs faster, and would be even uglier. But, you can just stick that in a function named "parse_cents" or "parse_decimal($str,$scale)" and hide the details.

Another option is to use Math::BigRat, which will handle all arbitrary cases, but then the performance of all the math you do on the numbers will be a little slower.


In reply to Re: Yet again: floats are not expressed accurately by NERDVANA
in thread Yet again: floats are not expressed accurately by bliako

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.