美文网首页
微信支付-退款手续费问题排查

微信支付-退款手续费问题排查

作者: flairpower | 来源:发表于2019-07-28 22:23 被阅读0次

    微信退款手续费规则:

    应退还手续费金额 = ROUND((本次退款实际有效退款金额/(已结算金额-已结算已退款金额))*(已收取手续费-已退款手续费))

    ROUND(x)使用银行家算法进行舍入到分。

    我们测试过程中使用了如下的测试用例:

    结算金额为8.50元,共分10笔进行退款,每笔为0.85元。

    我们发现在第5笔和第6笔产生了差异

    之后我们对公式内的数据分段进行计算,发现了一个可疑点。

    第5笔计算出来的数据不是0.005,而是比0.005略大产生了精度问题

    之后开始怀疑计算机的浮点存储方式导致精度问题。

    方式一

    double tmp = 0.05/3*3;

    tmp为0.05。

    方式二

    double tmp1 = 0.05/3;

    double tmp2 = tmp1*3;

    tmp2为0.05。

    本来我以为方式二会产生精度的问题,但是并没有能复现问题。至此问题排查陷入了僵局。

    最终微信方面反馈,确实是精度问题。问题也定位在了一样的位置,因为开发同学多进行了一步ROUND运算。

    原公式:

    ROUND((本次退款实际有效退款金额/(已结算金额-已结算已退款金额))*(已收取手续费-已退款手续费))

    开发同学实现的公式:

    ROUND(ROUND(本次退款实际有效退款金额/(已结算金额-已结算已退款金额))*(已收取手续费-已退款手续费))

    相关文章

      网友评论

          本文标题:微信支付-退款手续费问题排查

          本文链接:https://www.haomeiwen.com/subject/ahcmrctx.html