数据库字段是decimal(7,2),后端插入时怎么对金额处理稳妥不会出错?
$money = 1500.668;
var_dump(sprintf("%.2f", $money)); //string(7) "1500.67"
var_dump(round($money,2)); //float(1500.67)
我所知道的这两种,不知哪种好,还有没有最稳妥的处理方法
高认可度评论:
2种四舍五入的处理方式不同,
sprintf("%.2f", $money)
这种方式四舍六入五成双,建议转化为整数四舍五入再转化为小数建议金额存到6位。
如果你需要四舍五入,直接就往里面存就好了,decimal存的小数位数超出设定的小数位数,会自动进行四舍五入,不需要的话,小数需要精度运算
你的金额这么小的吗?只需要 7 位? :grin:
建议第一种或者使用 bc 库,因为 string 是最保险的数据类型,另外,其实最好可以模仿微信、支付宝,使用分做单位,用整数保存,会减少小数出现的计算与金额分割问题