如何处理舍入百分比的总和不等于100?

8 浏览
0 Comments

如何处理舍入百分比的总和不等于100?

假设我们有一个带有整数的项目列表:\n美国:3人\n澳大利亚:2人\n德国:2人\n如果我们计算每个值占整个列表总和的百分比,我们得到:\n美国:3/(3+2+2)*100 = 42.857...%\n澳大利亚:2/(3+2+2)*100 = 28.571...%\n德国:2/(3+2+2)*100 = 28.571...%\n如果我们四舍五入,我们得到:\n美国:43%\n澳大利亚:29%\n德国:29%\n43+29+29 = 101不等于100,对于软件的用户来说有点奇怪。您会如何解决这个问题?

0
0 Comments

在统计报告中,由于四舍五入的原因,组成部分的总和可能不等于总数。

这是统计报告中的标准问题。

这种欺骗行为会在下一个表格、报告或附录中产生问题。你无法追踪这些变化。只有那些不读这种报告的人会觉得好笑。

是的,这并不是一个四舍五入误差。

我同意你的观点,只有那些不读这种报告的人才会觉得好笑,而且这种欺骗行为毕竟是没有必要的。然而,这种欺骗可能只是用于显示,而内部数据将保持不变,所以不会影响下一个表格等等。

解决方法:

1. 避免使用四舍五入来计算百分比。可以尝试使用更精确的计算方法,如使用小数计算而不是百分比计算。

2. 如果必须使用四舍五入,可以尝试进行修正。例如,当总和小于100时,可以将剩余的百分比分配给前面的组成部分,或者将剩余的百分比分配给最接近的组成部分。

3. 在报告中明确说明存在四舍五入的问题,并解释其原因和影响。这样读者就能够理解和解释报告中的数据不准确的原因。

4. 在内部数据中保持精确的计算,以便在需要时进行后续分析和处理。可以使用更高精度的数据类型或计算方法来避免四舍五入带来的问题。

5. 在进行数据分析和报告之前,进行充分的测试和验证,以确保结果的准确性和一致性。

以上是解决四舍五入导致百分比不等于100的方法和建议。通过避免或修正四舍五入问题,并保持内部数据的准确性,可以有效地解决这个问题。

0
0 Comments

当我们计算百分比并将其四舍五入为整数时,有时会出现总和不为100%的情况。这可能会导致结果看起来有些奇怪,因此需要找到解决方法。

解决方法有以下三种选择:

选项一:添加脚注

如果你关心结果对用户来说看起来有些奇怪,可以在结果中添加一个脚注,提到百分比已经被四舍五入并且可能不总和100%。你可以通过编程的方式只在出现这种行为时显示这个消息。

USA percentage: 43

Australia percentage: 29

Germany percentage: 29

*Percentages may not total 100 due to rounding

选项二:使用有理数

由于你使用的是Ruby,我建议使用有理数来进行计算。这样,在需要时你不会丢失精度。而不是使用脚注,你可以将有理数的百分比显示在旁边,如下所示:

USA percentage: 43 (3/7)

Australia percentage: 29 (2/7)

Germany percentage: 29 (2/7)

选项三:增加小数位数

增加更多的小数位数可以减少四舍五入误差:

USA percentage: 42.9

Australia percentage: 28.6

Germany percentage: 28.6

这样就得到了100.1而不是101。

增加更多小数位数是一个很好的解决方案/修复方法。添加一个小数位数可以告诉观众这些不是整数,因此可以预期已经进行了四舍五入。许多人在看到没有小数的整数时,会认为它是精确的数字,而不是一个四舍五入的数字。因此,在答案中加入一个小数位数是一个很好的主意。

0
0 Comments

当计算舍入百分比的总和不等于100时,问题出现的原因是在舍入过程中产生了小数部分,导致总和没有达到100。解决方法可以参考选举中使用的最大剩余法(Largest Remainder Method)。在该方法中,首先将每个百分比取整数部分,然后将剩余的小数部分按照大小顺序逐个分配给整数部分最大的百分比,直到总和达到100。如果存在小数部分相同的百分比,可以根据需要选择不同的方案。

对于给定的例子,原始的百分比如下:

USA: 42.857...

Australia: 28.571...

Germany: 28.571...

将每个百分比取整数部分后,得到:

USA: 42

Australia: 28

Germany: 28

这样得到的总和是98,需要再取两个百分比。接下来,需要比较小数部分的大小,选择最大的小数部分进行分配。根据给定的例子,小数部分如下:

USA: 0.857...

Australia: 0.571...

Germany: 0.571...

如果选择USA,总和将达到99,还需要再取一个百分比。这时就出现了问题,因为Australia和Germany的小数部分相同(0.571...),如果同时选择这两个百分比,总和将达到101。因此,有两种选择方案:

(a) 如果强烈希望总和为100,只选择Australia,不再取其他百分比:

USA: 43

Australia: 29

Germany: 28

(b) 如果更倾向于保持Australia和Germany的平等地位,可以在此处停止:

USA: 43

Australia: 28

Germany: 28

另外,还可以参考GitHub上的一个实现最大剩余法的工具,链接为https://github.com/jethroo/lare_round,欢迎进行改进。

0