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

Laravel 8中可替代float或double的浮点数存储迁移字段写法是什么

Laravel迁移存储指定精度浮点数的实现方案

空白处的填写方案

你可以根据场景选择以下两种实现方式,优先推荐定点数存储方案,避免精度丢失:

方案1:使用decimal定点类型(推荐,尤其适用于金额存储)

空白处填写decimal,完整代码如下:

$table->decimal('money', 6, 1); // 用于存储最大99999.9的定点数,完全覆盖你需要的1.5~99999.5范围

参数说明:

  • 第2个参数6:代表数值总位数,包含整数部分和小数部分
  • 第3个参数1:代表小数部分占1位,对应的整数部分就占5位,最大可存储99999.9的数值

注意:decimal是定点存储类型,不会出现浮点数精度丢失问题,涉及金额、统计等对精度要求高的场景必须用这个类型。


方案2:使用float浮点类型(不推荐用于金额场景)

如果你不需要严格精度控制,只是存储普通浮点数值,也可以填写float:

$table->float('money');

缺陷:float是近似存储类型,进行四则运算时容易出现精度误差,比如0.1+0.2计算结果不等于0.3的问题,绝对不要用于金额计算场景。


金额存储拓展最优实践

你也可以把金额单位转换为最小单位(比如元转成分),直接用整数类型存储:

$table->integer('money'); // 1.5元存储为150分,读取后再除以100转换为元即可

这个方案完全避免了浮点数运算的精度问题,也是很多金融类系统的常用选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:24:04