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/.
you are multiplying a string, not a number. Try using .to_f (to float) method On 1/20/06, Joshua Muheim <forum@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@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060119/b337cd58/attachment.html
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@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@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >
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? -- Posted via http://www.ruby-forum.com/.
Joshua Muheim 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 -- Posted via http://www.ruby-forum.com/.