我正在尝试让我的控制台打印出我所有位置的总和,费率卡定价。
我试图通过控制台完成这项任务,但结果是得到了一个BigDecimal。不知道如何将结果转换为易读的字符串或整数。
结果:
Location.pluck(:rate_card).sum
=> "#<BigDecimal:7f7cf347edd0,'0.3091675E6',18(36)>"
在我的位置'index‘中,为了能够看到美元金额,我的设置如下:
<%= number_to_currency(location.rate_card, :precision => 2) %>
提亚
发布于 2014-02-19 19:26:00
Location.each do |e|
puts e.rate_card.to_s.to_f.round(2)
end
发布于 2015-09-15 04:37:43
您将看到:rate_card
作为BigDecimal返回,因为它是在数据库模式中定义的。如果您要在Rails控制台中发出Location.rate_card.class
,您将看到=> BigDecimal
。
正如@Darby所提到的,您可以使用round
。在控制台中,发出Location.pluck(:rate_card).sum.round(2)
命令,它将正确显示所需的四舍五入的结果。
最后,你的结果的第二部分有意义吗?您展示了用于正确显示视图代码的代码,但我认为这与您的问题无关。
发布于 2016-07-28 02:09:09
BigDecimal可以转换为如下所示的字符串。
pry(main)> b = BigDecimal.new('78.23')
=> #<BigDecimal:7ff0119cab68,'0.7823E2',18(18)>
[37] pry(main)> b.to_s
=> "0.7823E2"
您不需要先将其更改为字符串,然后再更改为浮点数。在BigDecimal对象上定义to_f
。
[34] pry(main)> b.to_f
=> 78.23
还有分别用于整数和有理数的to_i
和to_r
。
https://stackoverflow.com/questions/20979774
复制相似问题