Skip to content

金额

DECIMAL

sql
DECIMAL(p, s)

p:总位数

s:小数位

sql
DECIMAL(10, 2)

该数最多10位,并且有2位小数,可表示范围:-99999999.99 ~ 99999999.99

场景类型
普通金额DECIMAL(10,2)
大额资金DECIMAL(18,2)
高精度(手续费/汇率)DECIMAL(18,6)

在Java中使用BigDecimal与之对应

java
private BigDecimal amount;

VARCHAR(不推荐)

❌ 无法做金额计算(排序、加减都麻烦)

❌ 容易出现脏数据(比如 "12a.3")

❌ 性能差(索引、计算)

DOUBLE(不推荐)

❌ 精度丢失(经典问题:0.1 + 0.2 ≠ 0.3)

❌ 财务数据绝对不能用