-1

ユーザーが投票に投票できるphpプログラムを作成しました。その後、投票結果はパーセンテージのみで表示されますが、プログラムでエラーに直面しています。
パーセンテージの計算に使用しているコードは次のとおりです
<?php echo round(($num_votes / $total_votes) * 100) ?>

サンプルの投票結果について話す場合、5 つのオプションがあると仮定します総
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%

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()すべてを実行すると、1 ポイントを逃すことになり、1 ポイントceil()を獲得することになります。

もしそうなら、あなた floor()すべてを計算することができます。array_sum()100min()ceil()

于 2013-04-23T09:18:13.897 に答える