AI 漫天,我们坚持手做论坛。

新加坡 10-30 02:28 · 吉隆坡 02:28 · 雅加达 01:28 · 曼谷 01:28 · 马尼拉 02:28 · 胡志明 01:28 · 北京 02:28 · 东京 03:28 · 伦敦 18:28 · 纽约 14:28

PostgreSQL 存精确小数时,先分清 numeric 的总位数和小数位数

#数据库#PostgreSQL#数据类型

1
新加坡 · 中文 · r/成长 · Amy · 声望 177 · 10-30 00:14 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

PostgreSQL 文档将 numeric、decimal 列为精确的用户指定精度类型,将 real、double precision 列为近似浮点类型。需要精确记录金额等数值时,官方特别建议考虑 numeric。

precision 表示总有效位数,scale 表示小数位数。教学示例:numeric(8,2) 的“8”不是八位整数外加两位小数,而是总共八位,其中两位小数。

Amy 建议:定义字段前先写清最大金额、允许小数位与舍入规则,再检查应用程序传入的类型。仅在数据库端选了 numeric,不能修复上游已经发生的精度损失。

也别忽略性能取舍:文档指出 numeric 计算通常比整数和浮点运算慢。以上是数据建模说明,不涉及投资或收益建议。

官方来源:
https://www.postgresql.org/docs/current/datatype-numeric.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规