我创建了一个 php 程序,用户可以在其中对投票进行投票,之后,投票结果将仅显示百分比,但是我的程序遇到错误。
我用于百分比计算的代码是
<?php echo round(($num_votes / $total_votes) * 100) ?>
Now 如果我们谈论一个示例民意调查结果,假设我们有五个选项
option A - 4 votes
option B - 2 votes
option C - 4 votes
option D - 1 votes
option E - 0 votes
Total votes =11
在这种情况下,生成的百分比结果是
option A - 36%
option B - 18%
option C - 36%
option D - 9%
option E - 0%
但是百分比的总数是99%
而不是100%
。我想要的是总应该是100%
任何帮助将不胜感激
谢谢。
问问题
1712 次
4 回答
5
如果您使用的是四舍五入的数字,您确实可以得到...四舍五入的数字。这些四舍五入的数字的总和将不同于常规总和。你几乎无法改变这一点。如果你坚持,你必须:
- 计算四舍五入的数字
- 计算总和,如果不是 100%,
- 遍历四舍五入的数字并决定哪一个应该得到缺失的百分比。
但是你在弄乱数据。你可能认为你在清理它,但你把它搞砸了。
于 2013-04-23T09:16:47.610 回答
1
这种方式导致〜100%,'number_format'是件好事
$a = 4;
$b = 2;
$c = 4;
$d = 1;
$e = 0;
$total = $a + $b + $c + $d + $e;
$arr = array(
'a' => number_format(($a / $total) * 100, 3),
'b' => number_format(($b / $total) * 100, 3),
'c' => number_format(($c / $total) * 100, 3),
'd' => number_format(($d / $total) * 100, 3),
'e' => number_format(($e / $total) * 100, 3)
);
foreach ($arr as $answer => $percentage) {
echo $answer .': '. $percentage . '<br />';
}
// this will be 100.001 so we format is
echo 'total: '. number_format(array_sum($arr), 2);
于 2013-04-23T09:23:15.873 回答
0
您可以指定小数点后的位数。例如:圆形(数字,2);
于 2013-04-23T09:19:49.097 回答
-2
没有什么开箱即用的办法,如果你floor()
每件事都会错过一分,如果ceil()
你会获得一分。
你可以 floor()
一切然后如果然后计算array_sum()
,如果不是然后100
找到它。min()
ceil()
于 2013-04-23T09:18:13.897 回答