在我比较调查问卷的页面上,我计算了两者的平均值。但是,无论我输入什么数字,某一行代码总是以零除。代码:
<?php foreach($questions as $question) : ?>
<?= Html::tag('h4', $question->question) ?>
<?php
//FIRST SET OF QUESTIONNAIRES
$answers1 = $questionnaires1->andWhere(['id_question' => $question->id]);
$all1 = [];
foreach($answers1->orderBy(['answer' => SORT_ASC])->all() as $answer1){
$all1[] = $answer1->answer;
}
$array1 = [
Yii::t('app', 'Number of answers') => $answers1->count(),
Yii::t('app', 'Average answer') => round(array_sum($all1)/count($all1), 2),
Yii::t('app', 'Median') => calculate_median($all1),
Yii::t('app', 'Standard deviation') => round(sd($all1), 2)
];
首先,我将每个答案存储在一个数组中,然后按升序排序。然后我通过添加数组中的每个值来计算平均值,并将其除以数组中的记录数。我还将结果舍入为2位小数。
出于某种原因,round(array_sum($all1)/count($all1), 2)
总是会导致零度偏差。我在执行计算之前检查了两个值,即4/3。它显然应该导致1.3333333。
最后,当我尝试echo var_dump(round(array_sum($all1)/count($all1), 2))
时,它按预期返回浮点数(1.33)...也许我在这里忽略了一些非常简单的东西,但我没有看到它。