我的架构上有一个价格的小数字段,每次我尝试插入价格时,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"
我引用了关于任意精度数字的手册:
数字的精度是有效数字的总数 整数,即两边的位数 小数点。
numeric
的scale是小数位数 在小数部分,小数点右边。
您无法将数字
>= 1
分配给数据类型 numeric(2,2)
的列。小数点前没有数字。
0.999
和 0.995
也违反了类型,因为它们以给定的 scale为 2 舍入为
1
。