日期:2014-05-17  浏览次数:20786 次

关于金额按比例分摊的问题
例如:有5条项目,单价金额分别是100,管理费用是:10 ,折扣率是:10 ,残值金额:20
那么我传webService计算金额的公式:(100 * (1+ 10/100) * 10/100) 100*1.1*0.1  然后还要将残值20块钱分摊到这5条项目上,也就是每一条分4 块, 最后单价金额=15,后面4条同上。
现在的问题是当项目条数很多的时候,而残值的金额很小的时候(残值是页面手输入的,可以输入小数点),四舍五入的时候就有存在金额有差异,总是会差个几分钱的问题,目前的这种算法算出的金额跟我传webService 的金额不一致, 该如何处理,能不能换一种别的算法,急。。
算法

------解决方案--------------------
没看懂你的公式,尤其是10/100,这个是整除 10/100=0, 10.0/100 = 0.1

建议你:
1 奇入偶不入。这种做法原值和各项舍入之后的合计数的差异最小。科学实验的时候,都会用到这种舍入方法。但不能确保一定没差值。
2 第一个或者最后一个人吃亏,差值他全包了
3 前N个或者后N个人吃亏,把差值的N分钱平分了

------解决方案--------------------
第一个请忽略,因为那个和你的步骤相反,是科学实验,测量N个测量值的时候。因为那个会有大有小,所以用奇入偶不入。而你是平均数,算出来N项是一个值。