Rails money round 美分

Rails money round cents up

我正在尝试四舍五入我的钱,但我希望金额总是四舍五入 (ceil)。

我完成了:

MoneyRails.configure do |config|
  config.rounding_mode = BigDecimal::ROUND_CEILING
end

Money.new(12345).format(:no_cents)

但它仍然是 returns“$123”而不是“$124”。

您是否尝试过将舍入模式设置为 ROUND_UP,而不是 ROUND_CEILING

我正在查看货币 gem 并且格式似乎没有利用任何舍入规则。它只是砍掉美分以获得 "absolute" 价值。

formatted = self.abs.to_s
...
if rules[:no_cents] || (rules[:no_cents_if_whole] && cents % currency.subunit_to_unit == 0)
  formatted = "#{formatted.to_i}"
end

此处来源:https://github.com/RubyMoney/money/blob/master/lib/money/money/formatting.rb

已尝试为您找到解决方法,也许可以将此作为一种方法添加到您的 Rails 模型中:

[2] pry(main)> require 'money'
=> true
[3] pry(main)> money = Money.new(12345, 'USD')
=> #<Money fractional:12345 currency:USD>
[6] pry(main)> "#{money.currency.symbol}#{money.to_f.ceil}"
=> "4"