- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决您自己可能遇到的以下现实问题:
你和一些 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
最佳答案
等等。问题已经解决了。很多次了。
"Theoratically, the sum of the differences should be zero, right?"
是的。但是,由于您使用了 float
,因此当人数不是 2 的幂时,您会遇到表示问题。
从来没有。使用。 float
为。财务。
从不
总是。使用。 十进制
为。财务。
始终
关于python - 以算法和公平的方式拆分账单,之后是 :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918567/
我有一个应用程序倾向于在后台线程中执行很多数据库 Activity (下载大型数据库更新),而且这个过程经常使“UI线程”匮乏-我知道数据库是不定期发布的,但是所使用的@synchronized机制不
我正在创建一个程序,用户可以在从一组项目中选择的两个项目之间进行一系列投票。每次投票后,会显示集合中的两个新项目并对其进行投票,直到看到集合中的所有成员。 这是我的限制条件: 每个用户应该以不同的随机
我正在开发一个在线判断类型的系统,其中大约 100 个不受信任的可执行文件将同时运行并评估相同的输入数据。 我希望每个可执行文件都限制在预定义资源池的 CPU、内存、磁盘空间等的相等份额。例如,如果资
我正在从事一个关于 CFS 的项目。使用Ftrace跟踪Linux公平进程的全路径。 根据文档 https://lwn.net/Articles/370423/ . [tracing]# echo $
Semaphore 类概述 developer.android.com看起来不错 - 对于那些已经熟悉这些概念和术语的人来说。 我熟悉那里的一些首字母缩略词和其他行话(例如 FIFO、锁等),但其他的
我是一名优秀的程序员,十分优秀!