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

Flask-SQLAlchemy插入MySQL时999999999被转为1000000000.0的问题求助

问题原因及解决方案

问题根源

MySQL的FLOAT是单精度浮点数,有效精确位数仅为6-7位。999999999是9位数字,超出了它的精确表示范围,因此会被自动近似为最接近的可表示浮点数1000000000.0,负数同理。

解决办法

改用DECIMAL定点数类型(推荐)

DECIMAL是定点数类型,能精确存储指定范围内的数值,完全适配你的需求。操作步骤:

  • 修改Flask-SQLAlchemy模型中的字段定义:
    # 替换原来的db.Float为DECIMAL,参数(10, 0)表示总位数10、小数位0,可根据实际需求调整
    amount = db.Column(db.DECIMAL(10, 0))
    
  • 执行数据库迁移命令:
    flask db migrate -m "修改amount字段为DECIMAL类型"
    flask db upgrade
    

修改后,999999999这类数值就能被精确存储,不会出现近似转换的问题。

临时应急方案(不推荐)

如果暂时无法修改字段类型,可尝试将数值转为字符串存储,但后续进行数值计算时需要额外处理,容易引入新问题,因此不建议长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:55:23