我的架构上有一个十进制字段的价格,每次我尝试插入价格时,pg都带有此错误。谁能给我任何光?感谢的
构造
t.decimal "price", :precision => 2, :scale => 2
错误
PG::Error: ERROR: numeric field overflow
DETAIL: A field with precision 2, scale 2 must round to an absolute value less than 1.
: INSERT INTO "items" ("category_id", "name", "price", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) RETURNING "id"
答案 0 :(得分:7)
我引用了Arbitrary Precision Numbers上的手册:
数字的比例是数字中的小数位数 小数部分,小数点右侧。一个人的精确度 numeric是整数中有效数字的总数, 也就是说,小数点两边的位数。
您无法将数字>= 1
分配给数据类型numeric(2,2)
的列。小数点前没有数字空间。
0.999
和0.995
也违反了该类型,因为它们以{em> 2 2 的方式舍入1