Small numerical answers i.e. 1e-18 are not graded correctly MDL-8473 merging from head
This commit is contained in:
@@ -356,9 +356,20 @@ class question_numerical_qtype extends question_shortanswer_qtype {
|
||||
/// Recalculate the tolerance and fall through
|
||||
/// to the nominal case:
|
||||
$tolerance = $answer->answer * $tolerance;
|
||||
// Falls through to the nominal case -
|
||||
// Do not fall through to the nominal case because the tiny fraction is a factor of the answer
|
||||
$tolerance = abs($tolerance); // important - otherwise min and max are swapped
|
||||
$max = $answer->answer + $tolerance;
|
||||
$min = $answer->answer - $tolerance;
|
||||
break;
|
||||
case '2': case 'nominal':
|
||||
$tolerance = abs($tolerance); // important - otherwise min and max are swapped
|
||||
// $answer->tolerance 0 or something else
|
||||
if ((float)$answer->tolerance == 0.0 && abs((float)$answer->answer) <= $tolerance ){
|
||||
$tolerance = (float) ("1.0e-".ini_get('precision')) * abs((float)$answer->answer) ; //tiny fraction
|
||||
} else if ((float)$answer->tolerance != 0.0 && abs((float)$answer->tolerance) < abs((float)$answer->answer) && abs((float)$answer->answer) <= $tolerance){
|
||||
$tolerance = (1+("1.0e-".ini_get('precision')) )* abs((float) $answer->tolerance) ;//tiny fraction
|
||||
}
|
||||
|
||||
$max = $answer->answer + $tolerance;
|
||||
$min = $answer->answer - $tolerance;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user