# Re: sprintf

**URL:** <https://www.ruby-forum.com/t/re-sprintf/74271>\
**Category:** Ruby\
**Created:** [December 22, 2005, 1:42am UTC](https://www.ruby-forum.com/t/re-sprintf/74271 "2005-12-22T01:42:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dasch](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b2d939/32.png) [@dasch](https://www.ruby-forum.com/u/dasch)\
**Post date:** [December 22, 2005, 1:42am UTC](https://www.ruby-forum.com/t/re-sprintf/74271/1 "2005-12-22T01:42:27Z")

</div>

> irb(main):004:0\> sprintf("%2s", “lalaa”)  
> =\> “lalaa”  
> irb(main):005:0\> sprintf("%2i", 1212)  
> =\> “1212”
> 
> ruby 1.8.3 (2005-09-21) [i686-linux]
> 
> What s my mistake?

Reading comprehension? =)

sprintf("%2.2s",“lalaa”)  
==\>“la”

You can’t do the equivalent for a number (as the precision setting for a  
number specifies decimal places).  
#####################################################################################  
This email has been scanned by MailMarshal, an email content filter.  
#####################################################################################  
#####################################################################################  
This e-mail message has been scanned for Viruses and Content and cleared  
by NetIQ MailMarshal  
#####################################################################################

---

<div class="post-metadata">

**Author:** ![dasch](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b2d939/32.png) [@dasch](https://www.ruby-forum.com/u/dasch)\
**Post date:** [December 22, 2005, 2:39am UTC](https://www.ruby-forum.com/t/re-sprintf/74271/2 "2005-12-22T02:39:37Z")

</div>

> irb(main):004:0\> sprintf("%2s", “lalaa”)  
> =\> “lalaa”  
> irb(main):005:0\> sprintf("%2i", 1212)  
> =\> “1212”
> 
> What s my mistake?

Daniel S. wrote:

> sprintf("%2.2s",“lalaa”)  
> ==\>“la”
> 
> u can’t do the equivalent for a number (as the precision setting for a  
> number specifies decimal places).

You _can_ do the equivalent for a number two ways that I can think of:

sprintf("%i", 1212 % 10\*\*2) #=\> “12” # modular arithmetic to truncate  
high  
digits  
sprintf("%.2s", 1212) #=\> “12” # cast integer to string

Also, I usually like using String#% instead of sprintf, just in case  
you’re  
not familiar with it:

“%.2s” % 1212 #=\> “12”

Cheers,  
Dave

---

<div class="post-metadata">

**Author:** ![dasch](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b2d939/32.png) [@dasch](https://www.ruby-forum.com/u/dasch)\
**Post date:** [December 22, 2005, 2:45am UTC](https://www.ruby-forum.com/t/re-sprintf/74271/3 "2005-12-22T02:45:38Z")

</div>

- Dave B. (removed\_email\_address@domain.invalid) wrote:

> Also, I usually like using String#% instead of sprintf, just in case you’re  
> not familiar with it:
> 
> “%.2s” % 1212 #=\> “12”

i wasnt familiar with it, quite impressive!

## So long

Michael ‘entropie’ Trommer; [http://ackro.org](http://ackro.org)

ruby -e “0.upto((a=‘njduspAhnbjm/dpn’).size-1){|x| a[x]-=1}; p  
‘mailto:’+a”
