josh
January 20, 2006, 12:54am
1
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
josh
January 20, 2006, 1:09am
2
you are multiplying a string, not a number. Try using .to_f (to float)
method
josh
January 20, 2006, 1:12am
3
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…
josh
January 20, 2006, 1:35am
4
Joshua M. wrote:
It seems that it’s another problem… I have to round the value to a
number without digits after the comma…
1234.2456256 should become 1234
How can i round integer values?
value.round will round to the nearest integer (only works for floats)
value.to_i will truncate the float part off without rounding.
_Kevin
josh
January 20, 2006, 1:29am
5
It seems that it’s another problem… I have to round the value to a
number without digits after the comma…
1234.2456256 should become 1234
How can i round integer values?
josh
January 20, 2006, 1:38am
6
Thank you, it’s working great now.