At 2009-08-14 04:04AM, "Gerald Ebberink" wrote:
>  On Thu, 2009-08-13 at 17:59 +0000, Glenn Jackman wrote:
>  
> > At 2009-08-13 07:23AM, "Gerald Ebberink" wrote:
> > >  On Thu, 2009-08-13 at 09:37 +0000, Glenn Jackman wrote:
> > >  
> > > > At 2009-08-13 03:54AM, "Gerald Ebberink" wrote:
> > > > >  require 'bigdecimal'
> > > > >  
> > > > >  var1 = 10
> > > > >  var2 = 20
> > > > >  ["var1","var2"].each do |v|
> > > > >  v = BigDecimal.new(v.to_s)
> > > > >  end
> > > > >  var1.class
> >
> >     bigs = variable_names.collect {|v| BigDecimal.new(eval(v).to_s)}
>  
>  Maybe my question wasn't clear enough.
>  I would like the values of var1, var2 etc, to change from Fixnum/Float
>  to BigDecimal without having to resort to something like
>  
>  if variable_names.include?("var1") do
>  var1 = BigDecimal.new(var1.to_s)
>  end
>  if variable_names.include?("var2") do
>  var2 = BigDecimal.new(var2.to_s)
>  end
>  if variable_names.include?("var3") do
>  var3 = BigDecimal.new(var3.to_s)
>  end
>  etc etc

I was hoping you'd be able to take the last steps yourself.
You need to expand the eval'ed string a bit:

    %w{var1 var2}.each {|v| eval "#{v} = BigDecimal.new(#{v}.to_s)"}

as in:

    irb(main):010:0> [var1, var2]
    => [10, 20]
    irb(main):011:0> %w{var1 var2}.each {|v| eval "#{v} = BigDecimal.new(#{v}.to_s)"}
    => ["var1", "var2"]
    irb(main):012:0> [var1, var2]
    => [#<BigDecimal:7ff74f84,'0.1E2',4(8)>, #<BigDecimal:7ff74d68,'0.2E2',4(8)>]


-- 
Glenn Jackman
    Write a wise saying and your name will live forever. -- Anonymous