Don't trust sprintf(). For whatever whim people had, it has some very arbitrary ideas about how to round numbers. On some platforms, it rounds 0.5 down, but 1.5 up. I did a test on Solaris and Windows, and the results varied. (Both versions just rely on their C runtime implementations of sprintf().)

If you care about numbers, do the math yourself. Learn how floating point numbers on computers work, and where they're likely to introduce problems. For example, you're forcing a division before a multiplication in your loop. This reduces precision in floating point numbers. It's better to say $percent = ($x * 100 / $y);.

Once you've got the floating value, use $rounded = int($unrounded + ($unrounded <=> 0)*0.5);. (This uses the spaceship operator like a sgn() function.)

--
[ e d @ h a l l e y . c c ]


In reply to Re: How to get rounded numbers to =100% ?? by halley
in thread How to get rounded numbers to =100% ?? by alarix

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.