首页/数据/数仓建模速查/DECIMAL 精度选择规范
分层与规范64 条

DECIMAL 精度选择规范

金额用 DECIMAL(18,2)、汇率与比率用 DECIMAL(10,4) 或更高、单价可用 DECIMAL(18,4);避免用 FLOAT/DOUBLE 存金额造成舍入误差。

数仓建模速查数据更新于 2026-10-12
金额DECIMAL(18,2)
比率/汇率DECIMAL(10,4)
单价DECIMAL(18,4)
禁止FLOAT 存金额

精度定义

精度定义
CREATE TABLE ads_trade_fin_day (
  pay_amt      DECIMAL(18,2) COMMENT '支付金额(元)',
  refund_rate  DECIMAL(10,4) COMMENT '退款率(小数)',
  fx_rate      DECIMAL(10,4) COMMENT '汇率'
) PARTITIONED BY (dt STRING);
浮点存金额在汇总时会出现 0.01 级别的漂移,财务对账时很难解释。

易错点

  • 用 DOUBLE 存金额,汇总求和出现尾差

数据来源与参考

  • MySQL 8.0 Reference Manual: Numeric Types
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌