考虑以下四个百分比,以float数字表示:
13.626332%
47.989636%
9.596008%
28.788024%
-----------
100.000000%
我需要将这些百分比表示为整数。如果仅使用Math.round(),我最终将占101%。
14 + 48 + 10 + 29 = 101
如果使用parseInt(),我最终将获得97%的收益。
13 + 47 + 9 + 28 = 97
有什么好的算法可以将任意数量的百分比表示为整数,而总数量仍保持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)
在平局(3.33、3.33、3.33)的情况下,可以做出任意决定(例如3、4、3)。
开满天机
守候你守候我
拉莫斯之舞