成本分摊精确度的问题

[复制链接]
查看11 | 回复8 | 2021-1-27 07:14:38 | 显示全部楼层 |阅读模式
关于成本核算的问题:比如,100块钱,材料a占2.4,材料b占3.4,材料c占1.7,如后计算a分摊的钱x为:100*2.4/(2.4+3.4+1.7),b分摊的钱y为100*3.4/(2.4+3.4+1.7),材料c分摊的钱z为100*1.7/(2.4+3.4+1.7),但最后由于精确度的原因,x+y+z!=100,学校里学过数值分析,貌似可以用里面算法,不过早忘了,请问各位大侠这个问题怎么解决?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
用分数来算:将2.4、3.4、1.7换为分数12/5、17/5、17/10。
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
你没继续往下算,最后分子,分母约分,还是除不尽的,误差还是存在
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
你没懂我的意思。
直接用浮点运算肯定是有误差的。
我的意思是:中间运算以及结果均用分数来表示,也就是:原来的小数四则运算变成分数的四则运算。
如果你想要结果用小数表示,而且又想使x+y+z=100,那就条件地对小数位进行舍取。
另外,你给的例子,不会出现x+y+z=!100的情况。
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
x=100*2.4/(2.4+3.4+1.7)
y=100*3.4/(2.4+3.4+1.7)
z=100-x-y

x=(int)(100*100*2.4/(2.4+3.4+1.7)+0.5)=3200分=32元
y=(int)(100*100*3.4/(2.4+3.4+1.7)+0.5)=4533分=45元3角3分
z=(int)(100*100*1.7/(2.4+3.4+1.7)+0.5)=2267分=22元6角7分
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
这种东西怎么分都不公平的,全部取整,多的就是我的
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
我也遇到过这种问题,最典型的就是100分3人平分,如果都需要保留证书位,那么怎么也分不好。
回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
不可能完全公平,但是可以相对公平;要先根据实际问题来选择一种平分标准;
然后才考虑怎么实现,就像我上面说的,不是开玩笑,也是一种标准,只是不满足x+y+z=100而已;
(我猜的)像银行,很多除不尽的,应该都是他拿走了。^-^

回复

使用道具 举报

千问 | 2021-1-27 07:14:38 | 显示全部楼层
是呀,如果是分配工资,可以循环着让大家轮流占误差的部分;但是如果是成本分摊,要求误差不能超过1分钱,则上面的算法就无法保证做到这一点了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行