MySQL 金额字段应该用什么类型?为什么?
金额必须用 DECIMAL(M, D)(定点数,精确):DECIMAL(18,2) 支持 10^16 数量级、精确到分(或 DECIMAL(20,4) 精确到万分之一)。禁止 FLOAT/DOUBLE:二进制浮点有精度误差(0.1+0.2≠0.3),金额累计/比较会出错。注意:① 大金额/多币种用 DECIMAL(20,4) 或扩展;② 分单位存储(BIGINT 存分)也是一种方案(整数运算最快),但展示转换易错;③ 计算在应用层或 SQL 都保持 DECIMAL 运算(避免隐式转浮点);④ 数据库层面建议加 CHECK(amount >= 0)(8.0.16+ 生效)。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。