[Rails] 123 * 3 => 123123123! But why?

James Adam james.adam at gmail.com
Thu Jan 19 23:34:59 GMT 2006


If you're finding that 123 * 3 == 123123123, that's almost certainly
because your 123 is actually '123', i.e. a String. You'll need to
ensure that the value you are operating on is a Numeric by converting
it...

- james

On 1/19/06, Joshua Muheim <forum at josh.ch> wrote:
> Hi all
>
> I extended the Globalize Plugin the following way:
>
> --------
> module Globalize
>   class Currency
>     def conversion_rate
>       code = Locale.active.currency_code
>       rates = { :USD => 1,
>                 :CHF => 0.75,
>                 :EUR => 1.1,
>                 :GBP => 3.1
>               }
>       value = rates[code.to_sym]
>       raise "No conversion rate found for currency '#{code}'
> (#{Locale.active.language.english_name})!" if value.nil?
>       value
>     end
>
>     def dollar_part
>       na? ? nil : cents / 100 / conversion_rate
>     end
>
>     def cent_part
>       na? ? nil : cents % 100 / conversion_rate
>     end
>   end
> end
> --------
>
> Sadly I get ugly results like
>
> $99.00 # correct!
> SFr. 132,0.00 # incorrect!
> € 90,0,00 # incorrect!
>
> I don't know why Ruby concatenates the values and does not multiply
> them... How can I fix that?
>
> Thanks for help. :-)
> Greetings, Josh
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Rails mailing list
> Rails at lists.rubyonrails.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
>


More information about the Rails mailing list