如何使用Money gem正确交换

时间:2015-12-23 20:23:59

标签: ruby currency

我使用Money gem来处理不同的货币。我在" JPY"中看到了一种奇怪的行为。货币。

我有以下费率:

10.to_money.exchange_to('EUR')
=> #<Money fractional:920 currency:EUR>

10.to_money.exchange_to('JPY')
=> #<Money fractional:1230 currency:JPY>

尝试兑换货币,我得到了奇怪的结果:

#<Money fractional:123000 currency:JPY>

&#34; JPY&#34;转换应为std::istream_iterator<T>。关于什么事情的任何想法?

1 个答案:

答案 0 :(得分:3)

这实际上取决于app.get("/users/:id", function(req, res){ var data = userModel.find().where('id', req.params.id); res.send(data); }); 的定义。下面的代码显示10美元确实等于1230日元。

Currency

如果您检查require "rails" require "money-rails" Money.add_rate('USD', 'EUR', 0.92) Money.add_rate('USD', 'JPY', 123.0) p 10.to_money.exchange_to('JPY') == Money.new(1230,"JPY") #=> true 货币

,您希望看到123000可能不正确
JPY

p Money.new(1230,"JPY").currency

#<Money::Currency id: jpy, priority: 6, symbol_first: true, thousands_separator: ,, html_entity: &#x00A5;, decimal_mark: ., name: Japanese Yen, symbol: ¥, subunit_to_unit: 1, exponent: 0.0, iso_code: JPY, iso_numeric: 392, subunit: , smallest_denomination: 1>定义中需要注意的重要字段是Currency的值。根据文件:

  

:subunit_to_unit单位与子单位之间的比例

这意味着,如果是日元,则显示的值为日元,不需要乘以100,如美元或欧元的情况。

subunit_to_unit: 1

以下是EUR

的货币定义

p 10.to_money.exchange_to('EUR') #=> #<Money fractional:920 currency:EUR> p 10.to_money.exchange_to('JPY') #=> #<Money fractional:1230 currency:JPY>

如果是欧元,#<Money::Currency id: eur, priority: 2, symbol_first: true, thousands_separator: ., html_entity: &#x20AC;, decimal_mark: ,, name: Euro, symbol: €, subunit_to_unit: 100, exponent: 2.0, iso_code: EUR, iso_numeric: 978, subunit: Cent, smallest_denomination: 1>表示该值以美分(或等值)

表示