Ruby on rails 如何在Rails 4模型中将整数转换为BigDecimal

Ruby on rails 如何在Rails 4模型中将整数转换为BigDecimal,ruby-on-rails,integer,Ruby On Rails,Integer,好的,我正在从订单模型中生成一些CSV。因此,在我的模型中,我需要将一个存储为整数的值(我已将订单的值转换为美分并存储为整数)转换为货币格式:例如,如果数据库中有1198,我希望将其显示为11.98。我怎样才能做到这一点 我试过: value = BigDecimal.new(value / 100).to_s value = (value / 100).to_s value = value.to_f / 100 但上述措施都不起作用。有什么想法吗?要获得浮动: (1198 / 100.to_

好的,我正在从订单模型中生成一些CSV。因此,在我的模型中,我需要将一个存储为整数的值(我已将订单的值转换为美分并存储为整数)转换为货币格式:例如,如果数据库中有
1198
,我希望将其显示为
11.98
。我怎样才能做到这一点

我试过:

value = BigDecimal.new(value / 100).to_s
value = (value / 100).to_s
value = value.to_f / 100
但上述措施都不起作用。有什么想法吗?

要获得浮动:

(1198 / 100.to_f).round(2)
#=> 11.98
要获取大十进制数,请执行以下操作:

value = 1198    
bd = BigDecimal.new((1198 / 100.to_f).to_s)
#=> #<BigDecimal:7f8ce28b5288,'0.1E3',9(18)>
bd.to_f
#=> 11.98
value=1198
bd=BigDecimal.new((1198/100.至f.至s)
#=> #
bd.to\u f
#=> 11.98
要获得浮动:

(1198 / 100.to_f).round(2)
#=> 11.98
要获取大十进制数,请执行以下操作:

value = 1198    
bd = BigDecimal.new((1198 / 100.to_f).to_s)
#=> #<BigDecimal:7f8ce28b5288,'0.1E3',9(18)>
bd.to_f
#=> 11.98
value=1198
bd=BigDecimal.new((1198/100.至f.至s)
#=> #
bd.to\u f
#=> 11.98

value.to_f/100给你什么?@MikeH如果原始值是1198,它给我11@WagnerMatosUK
如果原始值为1198,则为11
-这是不可能的
1198.to_f/100
应该给你
11.98
-这是唯一的选择:)(因为任何一个操作数都是浮点数,你总是会得到浮点数)
value.to_f/100
给你什么?@MikeH如果原始值是1198,它会给我11@WagnerMatosUK
如果原始值为1198,它给了我11个
——这是不可能的
1198.to_f/100
应该为您提供
11.98
-这是唯一的选项:)(因为任何一个操作数都是浮点数,您总是会得到浮点数)您必须在执行操作之前将运算符转换为BigDecimal,否则它是无用的:(@pj.martorell胡说八道。这取决于需要。如果需要精确的计算,她会首先将数据存储为小数。在这里,作者只是问如何将某些东西转换为BigDecimal,他得到了回答。@pj.martorell此外,在这个特定的情况下,既不将
1198
也不将
100
转换为BigDecimaltions没有任何意义-它不会改变结果数字。我得到的是
BigDecimal.new(100)#=>NoMethodError(未定义的方法
new'forbigdecimal:Class)`。这个API改变了吗?我使用的是Ruby 2.7.2。在执行该操作之前,必须将运算符转换为BigDecimal,否则它没有用:(@pj.martorell胡说八道。这取决于需要。如果需要精确的计算,她会首先将数据存储为小数。在这里,作者只是问如何将某些东西转换为BigDecimal,他得到了回答。@pj.martorell此外,在这个特定的情况下,既不将
1198
也不将
100
转换为BigDecimaltions没有任何意义-它不会改变结果的数字。我得到的是
BigDecimal.new(100)#=>NoMethodError(BigDecimal:Class的未定义方法
new')`。这个API改变了吗?我使用的是Ruby 2.7.2。