需求如下:
一般采购合同里都有 数量、单价、总价,合计(所有总价之和),实际中合同的合计价格都是个约数,
后面的临头都不要的(比如8000521.15都会直接算做800000的),由于这个变动导致合同要做到公司系统里去却有问题:
[color=red]各项价格之和不等于合同总价[/color],如是就需要在系统里输入各项单价的时候做调整。比如:
货物 单价 数量 价格
A 100 50 5000
B 80 12 960
C 16 9 144
合计:6100(临头4去掉了)
这个时候就需要调整各项单价,最终达到各项价格相加之和与6100相差最小。即:
X*50+Y*12+Z*9 最接近 4(要求X,Y,Z都只有2位小数)
这如何实现 ?
你可以把6104-6100=4,这个零头按照3样货物的总价进行摊派
A=100*50=5000
B=80*12=960
C=16*9=144
A占的比例就是 5000/(5000+960+144)
B占的比例就是 960/(5000+960+144)
C占的比例就是 144/(5000+960+144)
分别计算出A,B,C三样货物在零头(4元)中的比例。例如:
A= 4*5000/(5000+960+144)=3.28
B= 4*960/(5000+960+144)=0.63
C=4-3.28-0.63=0.09
然后再去计算单价
A单价=(5000-3.28)/50=99.93
B单价=(960-0.63)/12=79.94
C单价=(144-0.09)/9=15.99
这样就OK了。
我估计它单价想是整数!
对不起,我重新看了一下 stephen830的做法我认为可以,99.93 *50 + 79.94 *12 + 15.99*9=6099.69,不知道符合要求