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

为什么在Rails中对decimal类型进行运算有时会返回整数?

问题原因

你定义total字段时仅指定了precision(数值总位数),未显式设置scale(小数点后保留位数),Rails的decimal字段默认scale值为0,这意味着该字段实际只能存储整数,所有写入的小数都会被自动截断小数部分后落库。

运算@article.total + (1.1).to_d得到的确实是decimal类型的1.1,但赋值给字段后会触发数据库层的类型约束,最终存储到库中的值为1,读取时自然返回整数。

修复方法

修改字段定义,补充符合业务需求的scale参数即可,例如需要保留两位小数可调整为:

t.decimal  "total", precision: 10, scale: 2, default: "0.0"

修改后执行迁移更新表结构,后续小数运算结果就会正常保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:00