Ruby on rails 在Rails中使用美分存储价格

Ruby on rails 在Rails中使用美分存储价格,ruby-on-rails,activerecord,currency,stripe-payments,Ruby On Rails,Activerecord,Currency,Stripe Payments,好的,我有一笔分期付款,我正在申请纳税。Stripe以美分的形式输入一个数字,因此它会给您留下一个类似10015的数字,而不是100.15 在我的控制器中,我将号码作为10015/100.0发送到ActiveRecord 当我检索到它时,它会给我#> 发生什么事了 我试过了 rails g迁移将费用添加到用户费用:整数 及 rails g迁移将费用添加到用户费用:十进制 我在他的迁移中添加了 添加列:用户,:费用,:小数,精度:6,刻度:2 这是当前设置 如果值存储为10015/100,如何存储

好的,我有一笔分期付款,我正在申请纳税。Stripe以美分的形式输入一个数字,因此它会给您留下一个类似10015的数字,而不是100.15

在我的控制器中,我将号码作为10015/100.0发送到ActiveRecord

当我检索到它时,它会给我
#>

发生什么事了

我试过了

rails g迁移将费用添加到用户费用:整数

rails g迁移将费用添加到用户费用:十进制

我在他的迁移中添加了

添加列:用户,:费用,:小数,精度:6,刻度:2

这是当前设置


如果值存储为10015/100,如何存储/检索该值当您访问数据时,需要调用
。\u f

在irb中:

a = BigDecimal.new(5, 2)
a
=> #<BigDecimal:1ad7c98,'0.5E1',9(27)> 
a.to_f
=> 5.0
a=BigDecimal.new(5,2)
A.
=> # 
a、 托福
=> 5.0

BigDecimal
正是Rails在DBs中用于
decimal
类型的类型
0.1243E3
是科学符号,是
0.1243x10³
的缩写,即
124.3

只需使用Ruby中的
.to\f
方法,您就可以从中获得一个常规浮点值,或者您可以将
bigdecime
传递给其他Rails帮助程序,例如
number\u to\u currency(the\u big\u decimal)
将产生
“$124.30”


因此,换句话说,对于BigDecimal,您可能已经获得了您在这个问题中所要求的值。

该值以任意精度存储在BigDecimal对象中。但是,非整数值(即浮点)的“公共”表示形式不提供此精度。因此,BigDecimal提供了各种选项来将其值转换为其他类型

例如,您可以使用
expense.to\u f
来获取BigDecimal值的浮点表示形式(从而降低精度)。或者,如果您只想打印值,可以使用
to_s
方法之一将值格式化为字符串:

expense.to_s
# => "124.3"

有关详细信息,请参阅。

您所说的“花栗鼠胡言乱语”是什么?了解你的问题会很有帮助。@alephtwo编辑过,投反对票时发出嘘声。你的问题是什么?@Holger刚刚编辑过一次。哇,为什么投反对票的Geezi系统会失去这样的精确度不是不可避免的吗?除非所有费用都是向同一个客户收取的,在这种情况下,您可以进行计数,否则从小数点后三位四舍五入时,您肯定会赔钱或偷钱@霍格尔胡特