我已经创建了一个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%
。任何帮助都将受到赞赏
感谢。
答案 0 :(得分:5)
如果您正在处理四舍五入的数字,您最终可以得到...舍入数字。这些舍入数字的总和将与常规总和不同。你无法改变这一点。如果你坚持,你必须:
但是你弄乱了数据。你可能认为你正在清理它,但是你搞砸了。
答案 1 :(得分: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);
答案 2 :(得分:0)
您可以指定圆形小数位后的位数。 例如:圆形(数,2);
答案 3 :(得分:-2)
如果你floor()
你会错过一点,那么你可以做任何开箱即用的事情,如果你ceil()
你将获得一分。
你可以 floor()
然后如果然后计算array_sum()
,如果不是100
则找到min()
和ceil()
它