金额别用浮点数,改用定点小数类型参与计算

浮点数存金额迟早会对不上账,二进制没法精确表示 0.1 这类小数。

数据库用定点类型,MySQL 写 decimal(18,2),别用 float。

应用层用十进制类型参与运算,中途别转成 double。

比较金额不要写等号,改成差额小于最小币值的判断。

-- 数据库:定点小数,禁止 float / double
ALTER TABLE t_order MODIFY amount DECIMAL(18,2) NOT NULL;
// Java:构造时传字符串,别传 double
BigDecimal a = new BigDecimal("0.1");
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容