Another improvement on regrading. The code thought that grading for a question changed if the grade was like 1/3. The precision in the database is different than the newly calculated grade, so now we round both values to 5 decimal places, which should fix this problem.
This commit is contained in:
@@ -1531,10 +1531,13 @@ function quiz_regrade_question_in_attempt($question, $attempt, $quiz=false, $ver
|
||||
$attempt)) {
|
||||
$verbose && notify("Couldn't regrade state #{$state->id}!");
|
||||
}
|
||||
if ((float)$replaystate->grade != (float)$states[$j]->grade) {
|
||||
$changed++;
|
||||
|
||||
// We need rounding here because grades in the DB get truncated
|
||||
// e.g. 0.33333 != 0.3333333, but we want them to be equal here
|
||||
if (round((float)$replaystate->grade, 5) != round((float)$states[$j]->grade, 5)) {
|
||||
$changed++;
|
||||
}
|
||||
|
||||
$replaystate->id = $states[$j]->id;
|
||||
$replaystate->update = true;
|
||||
quiz_save_question_session($question, $replaystate);
|
||||
|
||||
Reference in New Issue
Block a user