考虑下面的四个百分比,表示为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).
我已经创建了一个php程序,用户可以在其中投票进行投票,之后,投票结果将只显示百分比,但是我在程序中遇到错误.
我用于百分比计算的代码是
<?php echo round(($num_votes / $total_votes) * 100) ?>
现在如果我们谈论一个样本民意调查结果,假设我们有五个选项
option A - 4 votes
option B - 2 votes
option C - 4 votes
option D - 1 votes
option E - 0 votes
总票数= 11
在这种情况下,百分比结果生成是
option A - 36%
option B - 18%
option C - 36%
option D - 9%
option E - 0%
但百分比总和99%而不是100%.我想要的是总应该是100%
任何帮助将不胜感激
谢谢.