如何处理不是100的舍入百分比之和?

Mis*_*hko 25 ruby rounding

假设我们有一个带整数的项目列表:

USA:       3 people
Australia: 2 people
Germany:   2 people
Run Code Online (Sandbox Code Playgroud)

如果我们计算每个值与整个列表中的总和的百分比,我们得到:

USA:       3/(3+2+2)*100 = 42.857...%
Australia: 2/(3+2+2)*100 = 28.571...%
Germany:   2/(3+2+2)*100 = 28.571...%
Run Code Online (Sandbox Code Playgroud)

如果我们围绕它,我们得到:

USA:       43%
Australia: 29%
Germany:   29%
Run Code Online (Sandbox Code Playgroud)

总和43 + 29 + 29 = 101不是100,并且对软件的用户来说看起来有点奇怪.你会如何解决这个问题?

saw*_*awa 29

您可以参考选举中使用的最大剩余方法:维基百科:最大剩余方法

在你的情况下,你有

USA:       42.857...
Australia: 28.571...
Germany:   28.571...
Run Code Online (Sandbox Code Playgroud)

如果你取整数部分,你得到

USA:       42
Australia: 28
Germany:   28
Run Code Online (Sandbox Code Playgroud)

最多可以增加98,你想再增加两个.现在,你看一下小数部分

USA:       0.857...
Australia: 0.571...
Germany:   0.571...
Run Code Online (Sandbox Code Playgroud)

并采取最大的,直到总数达到100.如果你采取美国,总数变为99,你想再拿一个.这里出现了问题.由于你在澳大利亚和德国之间留下了0.571的领带,如果你同时拿到两者,总数将是101.所以你有两种方法可供选择:

(a)如果你强烈要求总数为100,那就去澳大利亚,不要再采取任何措施:

USA:       43
Australia: 29
Germany:   28
Run Code Online (Sandbox Code Playgroud)

(b)如果你更愿意尊重澳大利亚和德国并列的事实,那你就停止了:

USA:       43
Australia: 28
Germany:   28
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚实现了一个使用最大余数方法的gem,你可以在https://github.com/jethroo/lare_round下查看,欢迎进一步改进;) (3认同)

Mat*_*att 12

选项1

如果你担心结果对用户来说有点奇怪,我会在结果上加上一个脚注,提到百分比已经四舍五入,而我的总数不是100%.只有在舍入导致此行为时,您才能以编程方式显示消息.

USA percentage:       43
Australia percentage: 29
Germany percentage:   29
Run Code Online (Sandbox Code Playgroud)

*Percentages may not total 100 due to rounding

选项2

由于您使用的是Ruby,我建议使用有理数.这样您就不会在需要时失去精度.您可以使用旁边的有理数字显示百分比,而不是脚注,如下所示:

USA percentage:       43 (3/7)
Australia percentage: 29 (2/7)
Germany percentage:   29 (2/7)
Run Code Online (Sandbox Code Playgroud)

选项3

包括更多小数位,以便舍入误差不那么严重:

USA percentage:       42.9
Australia percentage: 28.6
Germany percentage:   28.6
Run Code Online (Sandbox Code Playgroud)

这导致100.1而不是101.

  • 添加一个小数位表示观察者这些不是整数,因此可以预期已经舍入.很多人在看到一个没有小数的整数时会认为它是精确的数字而不是舍入的数字.因此,在答案中包括一个小数是一个好主意. (2认同)

小智 5

由于四舍五入,分量的总和可能不等于总数。统计报告中的标准。

作弊者会在下一个表格、报告或附录中回来咬你。您无法跟踪更改。只有那些不阅读这类报道的人才会觉得好笑。

哦耶。它不是一个舍入错误。