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

如何在MySQL数据库中精确更新DECIMAL类型数值

解决MySQL DECIMAL列更新时精度异常问题

问题原因

你用字符串形式的数值(比如'4444.8888')更新DECIMAL(12,6)列时,MySQL会先把字符串转换为浮点类型(如DOUBLE),再转成DECIMAL。但浮点类型本身存在精度限制,转换过程中会丢失精度,导致最后两位出现不确定的随机值。

解决方案

有三种可靠的解决方式:

  • 直接使用数值字面量:去掉数值的引号,让MySQL直接按DECIMAL类型处理,避免浮点转换环节:
    UPDATE `table` SET `balance` = 4444.8888 WHERE `token_address` = 'abc123'
    
  • 显式转换字符串为DECIMAL:用CAST函数强制指定转换类型,确保精度:
    UPDATE `table` SET `balance` = CAST('4444.8888' AS DECIMAL(12,6)) WHERE `token_address` = 'abc123'
    
  • 补全小数点后六位:如果必须用字符串,手动补全到六位小数,让转换时不会产生精度偏差:
    UPDATE `table` SET `balance` = '4444.888800' WHERE `token_address` = 'abc123'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:10:32