Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^3: Padding with sprintf changing number

by choroba (Cardinal)
on Sep 24, 2021 at 11:22 UTC ( [id://11136985] : note . print w/replies, xml ) Need Help??


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

What about %016.0f?
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^4: Padding with sprintf changing number
by sachin raj aryan (Acolyte) on Sep 24, 2021 at 11:34 UTC

    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