http://www.perlmonks.org?node_id=544607


in reply to Rounding off numbers

I always liked
$int = sprintf "%.0f", $float;
which rounds things off nicely.

Replies are listed 'Best First'.
Re^2: Rounding off numbers
by bulrush (Scribe) on Jan 25, 2016 at 14:22 UTC
    <s>sprintf and printf no longer rounds sometime after Perl 5.8.8. It truncates. </s>

    EDIT: I think I may have some bad information, which was corrected later on. If a calculation is done which results in 2.4999999999, sprintf("%.2f",2.49999999) would "round" to 2.49 for some reason, which appears to be truncation, but is actually a different problem. You may not be able to reproduce the problem by typing in 2.4999999. 2.49999999 has to be the result of a calculation.

      It truncates.
      Does it?
      $ perl -wE 'printf "%.3f\n", .0009 + $];' 5.023
      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,