gpt4 book ai didi

python - 以算法和公平的方式拆分账单,之后是 :)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:03:27 25 4
gpt4 key购买 nike

我正在尝试解决您自己可能遇到的以下现实问题:

你和一些 friend 共进晚餐,你们都同意平均分摊账单。除了当账单最终到达时,你会发现并不是每个人都有足够的现金(如果有的话,便宜的 SCSS )。

所以,你们中的一些人比其他人支付的更多...之后您回家并尝试决定“谁欠谁多少钱?”。

这个,我正在尝试通过算法公平地解决 :)

起初看起来很容易,但我被四舍五入困住了,我觉得自己完全失败了;)

关于如何解决这个问题有什么想法吗?

编辑:一些 python 代码来显示我的困惑

>>> amounts_paid = [100, 25, 30]
>>> total = sum(amounts_paid)
>>> correct_amount = total / float(len(amounts_paid))
>>> correct_amount
51.666666666666664
>>> diffs = [amnt-correct_amount for amnt in amounts_paid]
>>> diffs
[48.333333333333336, -26.666666666666664, -21.666666666666664]
>>> sum(diffs)
7.1054273576010019e-015

理论上,差值之和应该为零,对吧?

再举一个例子:)

>>> amounts_paid = [100, 50, 150]
>>> total = sum(amounts_paid)
>>> correct_amount = total / float(len(amounts_paid))
>>> correct_amount
100.0
>>> diffs = [amnt-correct_amount for amnt in amounts_paid]
>>> diffs
[0.0, -50.0, 50.0]
>>> sum(diffs)
0.0

最佳答案

http://www.billmonk.com/

等等。问题已经解决了。很多次了。


"Theoratically, the sum of the differences should be zero, right?"

是的。但是,由于您使用了 float,因此当人数不是 2 的幂时,您会遇到表示问题。

从来没有。使用。 float 为。财务。

从不

总是。使用。 十进制 为。财务。

始终

关于python - 以算法和公平的方式拆分账单,之后是 :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com