2

我的 RoR 目前给我一些 Bigdecimal 记录的问题。

我的代码是更新某些属性:

 BigDecimal.new((income*scale).to_s)

例如,我扫描了一个表单,其值为

 11210000000.0

当我打印 bigdecimal 时,它看起来像:

 #<BigDecimal:91e2284,'0.1121E11',18(27)>

当我查看 mySQL db 中的记录时,记录显示为

  Income: 9999999999

所有收入低于100亿的记录都没有这个问题。

到底是怎么回事?

4

2 回答 2

2

在终端上写了这个:

 rails g migration change_income_format_in_my_table

然后将迁移文件设置为:

class ChangeIncomeFormatInMyTable < ActiveRecord::Migration
 def up
change_table :forms do |t|
  t.change :income, :decimal, :precision => 16, :scale => 2
end
 end

 def down
    change_table :forms do |t|
     t.change :income, :decimal
   end
 end
  end

然后输入

rake db:migrate

谢谢house9

于 2013-07-01T03:22:22.310 回答
1

我认为(因为我在文档中找不到它,但我知道 Integer 就是这种情况)BigDecimal 在 Ruby 中没有 MAX 值。不幸的是,所有数据库系统都有这些限制,因此您可能希望将大数字作为字符串存储在数据库中。

于 2013-06-30T20:04:40.290 回答