银行资金如何处理数据精度的
本金乘以利率产生利息,然后就会出现超出精度的小数位,
那么如何确保银行对账能相差最低呢?
数学上又如何称呼这个问题?
对于这种问题又产生了什么样的数学模型,又衍生了什么样的问题?
PS:
如一个典型的还贷款问题:
总量是8万,系统的精度是两位小数位。
80000(总量) x 0.015(利率) = 1200(利息)。
然后该总量放贷给n个人。
然后客户还款的时候,出现如下情况:
123.3(借款数) x 0.015 (利率)= 1.8495 (利息)
如果四舍五入的话。用户还款就是1.85了
这样的话就多了0.0005 的数量。
如果每一个客户的金额都会产生超出系统精度的小数位。
那么该总量平摊的越多,最后还款的总和会大于1200.
虽然银行多得到了钱,但这样是对不上总账的。
反过来,如果银行是借客户这么多钱呢?那么银行需要多掏钱给客户了。
如果不采取四舍五入呢?
123.3(借款数) x 0.015 (利率)= 1.8495 (利息)
不采取四舍五入,客户还1.84,少了0.0095.
那么结果是客户没有还够系统的利息,对账时,总还款金额会变少。
作者:胡雍斐
链接:https://www.zhihu.com/question/24580446/answer/44375539
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
是有银行家舍入(Banker's Round)这个方法的,其规则如下:
舍去位的数值小于5时,直接舍去;
舍去位的数值大于等于6时,进位后舍去;
当舍去位的数值等于5时,分两种情况:5后面还有其他数字(非0),则进位后舍去;若5后面是0(即5是最后一位),则根据5前一位数的奇偶性来判断是否需要进位,奇数进位,偶数舍去。
这样如果假设从四舍五入位开始+后两位:000——999出现的概率是相同的(平均分布)。
(例如0.51元要舍入到0元或1元)
那么舍去末两位,银行所获得的收益,与进一位,银行所获得的损失,总计是相等的。
可以类似把x01——x49与x99——x51的损益相对应,正好相互抵消(x=0,1。。。9)。
剩余050,150,250。。。950这十个数,逢奇进,逢偶舍。
则050,250。。。850银行共获利(舍去)50*5=250
150,350。。。950银行共损失(进位)50*5=250
这十个数的损益同样相互抵销,所以舍去和进位的总损益相加为0。
所以如采用这种舍入方法,银行理论上总体是不赚不亏的,而传统的四舍五入,银行在平均分布的假设下损失是大于收益的。
当然在实际中000——999是否接近平均分布,这是可以进一步讨论的。
参考资料:建议25: 不要让四舍五入亏了一方
作者:胡雍斐
链接:https://www.zhihu.com/question/24580446/answer/44375539
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
是有银行家舍入(Banker's Round)这个方法的,其规则如下:
舍去位的数值小于5时,直接舍去;
舍去位的数值大于等于6时,进位后舍去;
当舍去位的数值等于5时,分两种情况:5后面还有其他数字(非0),则进位后舍去;若5后面是0(即5是最后一位),则根据5前一位数的奇偶性来判断是否需要进位,奇数进位,偶数舍去。
这样如果假设从四舍五入位开始+后两位:000——999出现的概率是相同的(平均分布)。
(例如0.51元要舍入到0元或1元)
那么舍去末两位,银行所获得的收益,与进一位,银行所获得的损失,总计是相等的。
可以类似把x01——x49与x99——x51的损益相对应,正好相互抵消(x=0,1。。。9)。
剩余050,150,250。。。950这十个数,逢奇进,逢偶舍。
则050,250。。。850银行共获利(舍去)50*5=250
150,350。。。950银行共损失(进位)50*5=250
这十个数的损益同样相互抵销,所以舍去和进位的总损益相加为0。
所以如采用这种舍入方法,银行理论上总体是不赚不亏的,而传统的四舍五入,银行在平均分布的假设下损失是大于收益的。
当然在实际中000——999是否接近平均分布,这是可以进一步讨论的。
参考资料:建议25: 不要让四舍五入亏了一方
金融和银行领域一般不用四舍五入,而是用四舍六入五成双法。
四舍六入好理解,"五成双"比较绕,如果保留位是5的话,根据5后面的数字来定,当5后有数时,舍5向前入1;当5后无有效数字时,分两种情况来讲:
第一种情况:5前为奇数,舍5入1;
第二种情况:5前为偶数,5舍去不进位(0是偶数)。
银行会把存款贷款利息按科目分别汇总,但是根本不会算利息和本金的关系,实际上关系也不大,一笔存款存了34天另一笔244天,活期还有本金变动,利率也不一致,贷款利率是需要分别定价的,根本没法核算本金利息利率的关系。
必要时可以提高精度,当不差不少钱的时候不解决,算一整天不够电费的呢。关键看对误差的容忍度。
比如我们买肉,零头抹了。买包子就不能抹。
而且抹了钱也不会凭空消失,一个人占了便宜一个人吃了亏,但是两个人乐意,就行。
我们只碰到过汇率精度问题,美金换一个什么很水的钱的时候,精度用少了,误差不可接受。改decimal就没事了。除不尽一般不是问题。