银行家舍入法(金额算法,也用于电商系统计算金额)

发布时间 2023-09-16 12:11:57作者: 鱼塘总裁

一、简单来说就是:

  四舍、六入、五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。

 

二、详细来说:

  1:小于等于四,直接舍去该位

  2:大于等于六,向前位进一

  3:等于五

    3.1:五后有数,向前位进一

    3.2:五后全零

      3.2.1:五前位数值为奇,则向前位进一(将前位凑成偶)

      3.2.2:五前位数值为偶,则直接舍去该位

 

三、为什么要这样?直接四舍五入不香吗?

  其实真的不香,我们从银行家的角度来看这个问题:

  1、四舍五入算法里面的四舍:舍弃的数值:0.000、0.001、0.002、0.003、0.004,因为是舍弃,对银行家来说,就是不用付款给储户的,那每舍弃一个数字就会赚取相应的金额:0.000、0.001、0.002、0.003、0.004。

  2、四舍五入算法里面的五入:进位的数值:0.005、0.006、0.007、0.008、0.009,因为是进位,对银行家来说,每进一位就会多付款给储户,也就是亏损了,那亏损部分就是其对应的10进制补数:0.005、0.004、0.003、0.002、0.001

  因为舍弃和进位的数字是在0到9之间均匀分布的,所以对于银行家来说,每10笔存款的利息因采用四舍五入而获得的盈利是: 0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005 也就是说,每10笔的利息计算中就亏损0.005元,即每笔利息计算损失0.0005元

  一句话来说,就是:抛去0不用算,该舍的只有4个数,该入的确有5个数,这样就会亏损。

 

四、如果用在电商中,有什么用处?

  1、如果电商仅仅使用四舍五入法,那么上面第三条已经说了,会亏损。

  2、我们在计算佣金分账时尤为明显,例如有一笔订单是100元的(一个小订单):

    a、按比例分账,算出来有1元需要分账

    b、这时候有两个用户要参与分账

    c、张三的分账比例是67、5%,李四的分账比例是32.5%

    d、计算分账结果:

      d.1、张三:1 * 0.675 = 0.675

      d.2、李四:1 * 0.325 = 0.325

    e、我们都知道,有三位小数无法分账对吧,所以需要取两位小数点

      下面我们分别进行两种算法尝试:

      e.1 四舍五入:

        e.1.1、张三:0.68

        e.1.2、李四:0.33

        如果按此方式进行分账,那么最终分的结果是 0.68+0.33 = 1.01,结果就是平台亏存了1分钱,因为多分账了0.01元

      e.2、好,那么我们现在用《银行家舍入》来试试:

        e.2.1、张三:0.68

        e.2.2、李四:0.32  (五前为偶应舍去)

        如果按此方法进行分账,那么结果就刚好是1元了(当然,也可以尝试一下修改分账比例,看看最终的结果是否正确)。