Ruby on rails 在Rails中使用美分存储价格
好的,我有一笔分期付款,我正在申请纳税。Stripe以美分的形式输入一个数字,因此它会给您留下一个类似10015的数字,而不是100.15 在我的控制器中,我将号码作为10015/100.0发送到ActiveRecord 当我检索到它时,它会给我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,如何存储
#>
发生什么事了
我试过了
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系统会失去这样的精确度不是不可避免的吗?除非所有费用都是向同一个客户收取的,在这种情况下,您可以进行计数,否则从小数点后三位四舍五入时,您肯定会赔钱或偷钱@霍格尔胡特