HI,下午好,新媒易不收取任何费用,公益非盈利机构
24小时服务热线: 4000-162-306
请扫码咨询

新媒易动态

NEWS CENTER

最近在做财务系统中遇到一个关于小数精度的问题

2019-07-18

最近在做财务系统中遇到一个关于小数精度的问题:

我们知道计算机在订单结算信息的时候,是通过单条订单计算结算金额,然后整体汇总再给出结果。这样才能支持业务上需要从不同时间维度汇总数据的要求(每3天一结算,每7天一结算,每月一结算等)。但是,作为一个正常用户,我们并不会这么去计算,我们采用的是先汇总商品价格再计算结算金额的方法,如下方展示:

结算公式: 应结算金额 = 商品价格-商品价格*佣金比例

计算机: 计算订单1的应结算金额J1,计算订单2的应结算金额J2,计算订单3的应结算金额J3,然后汇总。

人工计算:计算订单1,订单2,订单3的商品价格汇总,再按照总的商品价格计算应结算金额。

我们刚开始对计算机计算的每一个J1,J2,J3都采取四舍五入的方法,发现最后和人工核对时算出的结果是不一样的,会有精度上的误差。计算机汇总的结果可能是4.56,而人工算的是4.57,那么怎么办呢?

要从两个层面解决这个问题

1. 系统层面

  1. 改造计算系统的规则,舍弃2位小时的方式改为采用4位小数的方式计算具体金额。
  2. 更改数据修约的规则,舍弃四舍五入的方法,改为采用四舍六入五成双法,关于四舍六入五成双法在后面给出说明。

2. 展现层面

相关推荐