我正在尝试让我的控制台打印出所有我的位置价目表定价的总和。
我试图通过控制台完成此任务,但结果是获得了BigDecimal。坚持如何将此结果转换为易读的字符串或整数。
结果:
Location.pluck(:rate_card).sum
=> "#<BigDecimal:7f7cf347edd0,'0.3091675E6',18(36)>"
在我的位置'索引'中,为了能够看到一个美元金额,我将此设置为:
<%= number_to_currency(location.rate_card, :precision => 2) %>
TIA
答案 0 :(得分:9)
Location.each do |e|
puts e.rate_card.to_s.to_f.round(2)
end
答案 1 :(得分:3)
您看到:rate_card
作为BigDecimal返回,因为它是在数据库架构中定义的。如果您要在Rails控制台中发出Location.rate_card.class
,您会看到=> BigDecimal
。
如@Darby所述,您可以使用round
。在控制台中,发出Location.pluck(:rate_card).sum.round(2)
并且应该正确显示所需的结果。
最后,您的结果的第二部分是否有意义?您显示正在使用的代码以正确显示视图代码,但我认为它不会影响您的问题。
答案 2 :(得分:1)
BigDecimal可以转换为这样的字符串。
pry(main)> b = BigDecimal.new('78.23')
=> #<BigDecimal:7ff0119cab68,'0.7823E2',18(18)>
[37] pry(main)> b.to_s
=> "0.7823E2"
您不需要先将其更改为字符串,然后再将其更改为浮点数。
to_f
是在BigDecimal对象上定义的。
[34] pry(main)> b.to_f
=> 78.23
对于整数和有理数,还有to_i
和to_r
。