You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 14 多平台集成系统高精度货币数据类型选型咨询

PostgreSQL 14 高精度小数/金额数据类型选型

首选:numeric(或同义词decimal)

  • 这是PostgreSQL中唯一的精确小数类型,完全适配你对精度的严苛要求,不会像浮点类型那样产生二进制转换误差。
  • 定义方式:numeric(precision, scale),其中precision代表总位数,scale代表小数点后位数。针对你的场景,比如定义numeric(10,3),就能覆盖单价、数量相乘的结果,以及除以5后得到的三位小数。
  • 对应你给出的示例:
    • 存储单价0.93(可定义为numeric(5,2))、数量1099(integer类型),计算总计0.93 * 1099 = 1022.07,结果精确无偏差。
    • 后续统计时1022.07 / 5 = 204.414,numeric能完整保留三位小数的计算结果,不会出现精度丢失。
  • 核心优势:
    • 支持任意精度的小数运算,完全满足电商交易、统计分析的高精度需求。
    • 仅存储纯数值,没有money类型的货币符号、本地化格式等附加内容,减少数据处理的额外工作量。

需避免的类型

  • float/double precision:属于二进制浮点类型,无法精确表示部分十进制小数(比如0.1在二进制中是无限循环值),会导致计算误差,绝对不适合金额类高精度场景。
  • real:精度比float更低,同样存在浮点误差问题。

实践建议

  • 根据巴西电商业务的实际需求设置精度:比如日常交易金额保留两位小数,统计场景可能需要三位,可统一使用numeric(12,3),兼顾两类场景。
  • 所有金额相关计算均使用numeric类型,避免与其他类型混合运算引发隐式转换。

内容的提问来源于stack exchange,提问作者Diego Alves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:42:32