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/.