关于 migration 表设计 “工资” 字段的设计问题

关于migration表设计“工资”字段的设计问题

首先想到的是

$table->string('basic_wage')->default('')->comment('基本工资');
这种形式的设计,但是考虑后期的性能问题想再这边请教一下如何设计这种带小数点并且后期需要计算的字段
在官方手册中我发现了
$table->double('item', 8, 2); 以及 $table->float('item', 8, 2); 这两种
但是由于本人没有使用过,网上有关这两个类型的说明也少之又少,希望能有大佬能给予解惑。 感激不尽

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

与钱相关的有小数点的字段一律使用 decimal 类型,而不是 float 和 double,后面两种类型在做小数运算时有可能出现精度丢失的问题

4年前 评论
CrazyLickingDog (楼主) 4年前
Tricker 4年前
讨论数量: 10
leo

如果只需要精确到分,还有一种比较常见的做法是以分为单位存整型

4年前 评论
CrazyLickingDog (楼主) 4年前
leo

如果只需要精确到分,还有一种比较常见的做法是以分为单位存整型

4年前 评论
CrazyLickingDog (楼主) 4年前

与钱相关的有小数点的字段一律使用 decimal 类型,而不是 float 和 double,后面两种类型在做小数运算时有可能出现精度丢失的问题

4年前 评论
CrazyLickingDog (楼主) 4年前
Tricker 4年前

存整型,以分为单位,存进去的时候乘100,取出来的时候除100。即可。

4年前 评论
CrazyLickingDog (楼主) 4年前
qufo (作者) 4年前
CrazyLickingDog (楼主) 4年前
CrazyLickingDog

或者使用$table->integer(); 是否可以,着实不太清楚。

4年前 评论

使用整数,精确到分

4年前 评论

给别人钱就用整型,毕竟给得越少越好呀,收别人钱用decimal,多保留几位,有时候差一厘一年下来都有好多钱呀 :stuck_out_tongue_closed_eyes:

4年前 评论
CrazyLickingDog (楼主) 4年前

分单位,存整型

4年前 评论
CrazyLickingDog (楼主) 4年前

对于工资这么敏感的数据,竟然存的是明文?

4年前 评论

demical类型 + BC库,双重保险

4年前 评论
JeffreyBool

存整型是最好的方案,最小支持分就行了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!