【问题标题】:Having column with decimal type with 2 precision. But while save data in it, It saves value with only one precision.具有小数类型的列,精度为 2。但是在其中保存数据时,它仅以一种精度保存价值。
【发布时间】:2016-10-26 20:56:53
【问题描述】:

我正在使用 Ruby 2.2.4 和 PostgreSQL。 我已经创建了迁移:

add_column :plans, :price, :decimal, precision: 7, scale: 2

当我要创建新记录时,它会以一种精度保存 price 列中的值。

为什么会这样? 我想要 2 个精度的值。

例如: 保存的当前值:20.0 我要:20.00

【问题讨论】:

  • 它向您显示 20.0 它没有以任何特殊方式保存它。或者它可以向您显示 20.00,但再次以特殊方式保存也没关系。 20.0 和 20.00 的浮点值相同。所以看不同的显示方式,而不是保存。顺便说一句,我说的只是 Postgres

标签: postgresql decimal ruby-2.2


【解决方案1】:
select round(20.0 , 2), 20.00::double precision, 20.00::numeric

所以您可以使用round() 来表示点后的固定位数

【讨论】:

    【解决方案2】:

    我使用了 number_to_currency(@price)。它是 ActionView::Helpers::NumberHelper 的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多