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


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

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 ??

Replies are listed 'Best First'.
Re^5: Padding with sprintf changing number
by BillKSmith (Monsignor) on Sep 24, 2021 at 17:11 UTC
    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