-1

我创建了一个 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%
任何帮助将不胜感激
谢谢。

4

4 回答 4

5

如果您使用的是四舍五入的数字,您确实可以得到...四舍五入的数字。这些四舍五入的数字的总和将不同于常规总和。你几乎无法改变这一点。如果你坚持,你必须:

  1. 计算四舍五入的数字
  2. 计算总和,如果不是 100%,
  3. 遍历四舍五入的数字并决定哪一个应该得到缺失的百分比。

但是你在弄乱数据。你可能认为你在清理它,但你把它搞砸了。

于 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 回答