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


in reply to Re: Padding with sprintf changing number
in thread Padding with sprintf changing number

how to avoid this ..i dont want rounding after padding

  • Comment on Re^2: Padding with sprintf changing number

Replies are listed 'Best First'.
Re^3: Padding with sprintf changing number
by choroba (Archbishop) on Sep 24, 2021 at 11:22 UTC
    What about %016.0f?
    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

      Thanks Alot for explanation with example and your worked perfectly i have one more Q...my $padacntnum =sprintf("%017d",$bgl) this is going to round off every number ??

        It probably is not possible to predict the results in every case. Consider these two runs of your function. Only the second replicates your original problem.
        use strict; use warnings; no warnings 'experimental::signatures'; use feature 'signatures'; sub amnt($amn) { my $amount=$_[0]; print "$amount i m checking amount before padding,\n"; my $padamnt = sprintf("%016d",$amount); print "$padamnt i m checking amount after padding,\n"; return $padamnt; } print "EXACT integer\n"; amnt(488715); print "\n\nNot quite an integer\n"; amnt(488715 - 4e-10);

        OUTPUT:

        EXACT integer 488715 i m checking amount before padding, 0000000000488715 i m checking amount after padding, Not quite an integer 488715 i m checking amount before padding, 0000000000488714 i m checking amount after padding,
        Bill