Loading ...
Sorry, an error occurred while loading the content.

adding trailing zeros

Expand Messages
  • Noah
    Hi there, I am hoping to make the following changes to integers. I would like to do something like the following sprintf command Below but instead of leading
    Message 1 of 6 , Nov 7, 2012
    • 0 Attachment
      Hi there,

      I am hoping to make the following changes to integers.
      I would like to do something like the following sprintf command Below
      but instead of leading zeros I would like to add trailing zeros.

      $value = sprintf ("%04d", $value);

      but instead I would like

      1 to become 1000
      23 to become 2300

      is there a way to do that with the sprintf command.
    • Charles K. Clarkson
      ... You can t. Read FAQ 4: How do I pad a string with blanks or pad a number with zeroes?
      Message 2 of 6 , Nov 7, 2012
      • 0 Attachment
        On 11/7/2012 5:07 PM, Noah wrote:
        > Hi there,
        >
        > I am hoping to make the following changes to integers.
        > I would like to do something like the following sprintf command Below
        > but instead of leading zeros I would like to add trailing zeros.

        You can't. Read FAQ 4:

        How do I pad a string with blanks or pad a number with zeroes?

        http://perldoc.perl.org/perlfaq4.html#How-do-I-pad-a-string-with-blanks-or-pad-a-number-with-zeroes?

        The answer is near the bottom.



        Charles Clarkson
        --
        I'm not really a smart person. I just play one on the Internet.
      • Huangj
        my $value = 3; sub suffix_0 { my $c = $_[0] - length($_[1]); if ($c 0) { my $result = $value . 0 x$c; return $result; } return $_[1]; } print suffix_0(5,
        Message 3 of 6 , Nov 8, 2012
        • 0 Attachment
          my $value = 3;


          sub suffix_0 {
          my $c = $_[0] - length($_[1]);
          if ($c>0) {
          my $result = $value . '0'x$c;
          return $result;
          }
          return $_[1];
          }


          print suffix_0(5, $value);








          At 2012-11-08 07:07:53,Noah <noah-list@...> wrote:


          Hi there,

          I am hoping to make the following changes to integers.
          I would like to do something like the following sprintf command Below
          but instead of leading zeros I would like to add trailing zeros.

          $value = sprintf ("%04d", $value);

          but instead I would like

          1 to become 1000
          23 to become 2300

          is there a way to do that with the sprintf command.




          [Non-text portions of this message have been removed]
        • merlyn@stonehenge.com
          ... Huangj my $value = 3; Huangj sub suffix_0 { Huangj my $c = $_[0] - length($_[1]); Huangj if ($c 0) { Huangj my $result = $value . 0 x$c; Huangj
          Message 4 of 6 , Nov 8, 2012
          • 0 Attachment
            >>>>> "Huangj" == Huangj <redspid@...> writes:

            Huangj> my $value = 3;
            Huangj> sub suffix_0 {
            Huangj> my $c = $_[0] - length($_[1]);
            Huangj> if ($c>0) {
            Huangj> my $result = $value . '0'x$c;
            Huangj> return $result;
            Huangj> }
            Huangj> return $_[1];
            Huangj> }


            Huangj> print suffix_0(5, $value);

            Well, that's one sideways way to do it. Especially for Perl. :)

            I'd just do this:

            $num = sprintf('%4d', $num); # space pad to 4 chars
            $num =~ tr/ /0/; # turn spaces into zeroes



            --
            Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
            <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
            Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
            See http://methodsandmessages.posterous.com/ for Smalltalk discussion
          • Shlomi Fish
            Hi Huangj, a few comments on your code. On Thu, 8 Nov 2012 20:40:25 +0800 (CST) ... $value is global to the subroutine. That s not good. ... You should not use
            Message 5 of 6 , Nov 8, 2012
            • 0 Attachment
              Hi Huangj,

              a few comments on your code.

              On Thu, 8 Nov 2012 20:40:25 +0800 (CST)
              Huangj <redspid@...> wrote:

              > my $value = 3;
              >
              >
              > sub suffix_0 {

              $value is global to the subroutine. That's not good.

              > my $c = $_[0] - length($_[1]);

              You should not use positional indexes into @_:

              http://perl-begin.org/tutorials/bad-elements/#subroutine-arguments

              > if ($c>0) {
              > my $result = $value . '0'x$c;
              > return $result;
              > }
              > return $_[1];
              > }

              Why are you assigning to $result and then doing nothing with it except
              returning it? Furthermore, if $c <=0 then '0'x$c will be the empty string which
              is also OK.

              And you should not reference $value inside the loop.

              I would write it as:

              sub suffix_0 {
              my ($len, $s) = @_;

              return $s . ('0' x ($len - length($s)));
              }

              If you want to be on the safe side you can use ? : to check for
              zero-or-negative values.

              Regards,

              Shlomi Fish

              --
              -----------------------------------------------------------------
              Shlomi Fish http://www.shlomifish.org/
              "The Human Hacking Field Guide" - http://shlom.in/hhfg

              If Botticelli were alive today, he’d be working for Vogue.
              http://en.wikiquote.org/wiki/Peter_Ustinov

              Please reply to list if it's a mailing list post - http://shlom.in/reply .
            • Huangj
              I am glad that my code received so many replies. I learn from your suggestions to learn many things. Thank you. so, i will coding more code, post to the
              Message 6 of 6 , Nov 8, 2012
              • 0 Attachment
                I am glad that my code received so many replies.
                I learn from your suggestions to learn many things.
                Thank you.
                so, i will coding more code, post to the mailist.
                At 2012-11-08 21:38:45,"Shlomi Fish" <shlomif@...> wrote:
                >Hi Huangj,
                >
                >a few comments on your code.
                >
                >On Thu, 8 Nov 2012 20:40:25 +0800 (CST)
                >Huangj <redspid@...> wrote:
                >
                >> my $value = 3;
                >>
                >>
                >> sub suffix_0 {
                >
                >$value is global to the subroutine. That's not good.
                >
                >> my $c = $_[0] - length($_[1]);
                >
                >You should not use positional indexes into @_:
                >
                >http://perl-begin.org/tutorials/bad-elements/#subroutine-arguments
                >
                >> if ($c>0) {
                >> my $result = $value . '0'x$c;
                >> return $result;
                >> }
                >> return $_[1];
                >> }
                >
                >Why are you assigning to $result and then doing nothing with it except
                >returning it? Furthermore, if $c <=0 then '0'x$c will be the empty string which
                >is also OK.
                >
                >And you should not reference $value inside the loop.
                >
                >I would write it as:
                >
                >sub suffix_0 {
                > my ($len, $s) = @_;
                >
                > return $s . ('0' x ($len - length($s)));
                >}
                >
                >If you want to be on the safe side you can use ? : to check for
                >zero-or-negative values.
                >
                >Regards,
                >
                > Shlomi Fish
                >
                >--
                >-----------------------------------------------------------------
                >Shlomi Fish http://www.shlomifish.org/
                >"The Human Hacking Field Guide" - http://shlom.in/hhfg
                >
                >If Botticelli were alive today, he’d be working for Vogue.
                > — http://en.wikiquote.org/wiki/Peter_Ustinov
                >
                >Please reply to list if it's a mailing list post - http://shlom.in/reply .
              Your message has been successfully submitted and would be delivered to recipients shortly.