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"
我正在尝试四舍五入我的钱,但我希望金额总是四舍五入 (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"