相关疑难解决方法(0)

如何使舍入百分比加起来达到100%

考虑下面的四个百分比,表示为float数字:

    13.626332%
    47.989636%
     9.596008%
    28.788024%
   -----------
   100.000000%
Run Code Online (Sandbox Code Playgroud)

我需要将这些百分比表示为整数.如果我只是使用Math.round(),我最终总共有101%.

14 + 48 + 10 + 29 = 101
Run Code Online (Sandbox Code Playgroud)

如果我使用parseInt(),我最终总共有97%.

13 + 47 + 9 + 28 = 97
Run Code Online (Sandbox Code Playgroud)

什么是一个很好的算法来表示任意数量的百分比作为整数,同时仍然保持总计100%?


编辑:在阅读了一些评论和答案后,显然有很多方法可以解决这个问题.

在我看来,为了忠实于数字,"正确"的结果是最小化整体错误的结果,由相对于实际值引入的错误舍入量来定义:

        value  rounded     error               decision
   ----------------------------------------------------
    13.626332       14      2.7%          round up (14)
    47.989636       48      0.0%          round up (48)
     9.596008       10      4.0%    don't round up  (9)
    28.788024       29      2.7%          round up (29)
Run Code Online (Sandbox Code Playgroud)

在平局(3.33,3.33,3.33)的情况下,可以做出任意决定(例如3,4,3).

algorithm math rounding percentage

173
推荐指数
7
解决办法
8万
查看次数

标签 统计

algorithm ×1

math ×1

percentage ×1

rounding ×1