On Sep 13, 2005, at 7:22 AM, Brian Schr?der wrote:
> Or you can use the % operator on a string which I like better. I.e.
> "%3.2f" % 1.0 #=> "  1.00"

Just remember that if you have multiple formatted pieces in the same  
string, you need to supply the argument to the #% method as an array:

m = 57.23562
s = 83.333333
"%3.2f - %3.2f = %3.2f" % [ m, s, m-s ]

#=> "57.24 - 83.33 = -26.10"


The fun comes when you use string interpolation along with sprintf's  
codes:

class Numeric
     def rounded_to( decimals )
         decimals = decimals.round
         if decimals < 0
             factor = 10.0 ** -decimals
             ( ( self / factor ).round * factor ).round.to_s
         else
             "%.#{decimals}f" % self
         end
     end
end

[ 1, -1, 0.017, -0.017, 1254, -81.2412234 ].each{ |number|
     [5,2,1,0,-1,-2,-3].each{ |decimal_places|
         puts number.rounded_to( decimal_places )
     }
     puts '-' * 40
}


1.00000
1.00
1.0
1
0
0
0
----------------------------------------
-1.00000
-1.00
-1.0
-1
0
0
0
----------------------------------------
0.01700
0.02
0.0
0
0
0
0
----------------------------------------
-0.01700
-0.02
-0.0
-0
0
0
0
----------------------------------------
1254.00000
1254.00
1254.0
1254
1250
1300
1000
----------------------------------------
-81.24122
-81.24
-81.2
-81
-80
-100
0
----------------------------------------