mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-36025 qtype calculated: Fix handling of "-0"
This commit is contained in:
parent
d402e05ba7
commit
2cae75aacc
1 changed files with 7 additions and 1 deletions
|
@ -1227,7 +1227,7 @@ class qtype_calculated extends question_type {
|
||||||
echo $OUTPUT->notification(get_string('notvalidnumber', 'qtype_calculated', $a));
|
echo $OUTPUT->notification(get_string('notvalidnumber', 'qtype_calculated', $a));
|
||||||
$val = 1.0;
|
$val = 1.0;
|
||||||
}
|
}
|
||||||
if ($val < 0) {
|
if ($val <= 0) { // MDL-36025 Use parentheses for "-0"
|
||||||
$str = str_replace('{'.$name.'}', '('.$val.')', $str);
|
$str = str_replace('{'.$name.'}', '('.$val.')', $str);
|
||||||
} else {
|
} else {
|
||||||
$str = str_replace('{'.$name.'}', $val, $str);
|
$str = str_replace('{'.$name.'}', $val, $str);
|
||||||
|
@ -1255,6 +1255,7 @@ class qtype_calculated extends question_type {
|
||||||
} else if ($formula === '*') {
|
} else if ($formula === '*') {
|
||||||
$str = '*';
|
$str = '*';
|
||||||
} else {
|
} else {
|
||||||
|
$str = null;
|
||||||
eval('$str = '.$formula.';');
|
eval('$str = '.$formula.';');
|
||||||
}
|
}
|
||||||
return $str;
|
return $str;
|
||||||
|
@ -1870,6 +1871,11 @@ function qtype_calculated_calculate_answer($formula, $individualdata,
|
||||||
// Exchange formula variables with the correct values...
|
// Exchange formula variables with the correct values...
|
||||||
$answer = question_bank::get_qtype('calculated')->substitute_variables_and_eval(
|
$answer = question_bank::get_qtype('calculated')->substitute_variables_and_eval(
|
||||||
$formula, $individualdata);
|
$formula, $individualdata);
|
||||||
|
if (!is_numeric($answer)) {
|
||||||
|
// Something went wrong, so just return NaN.
|
||||||
|
$calculated->answer = NAN;
|
||||||
|
return $calculated;
|
||||||
|
}
|
||||||
if ('1' == $answerformat) { /* Answer is to have $answerlength decimals */
|
if ('1' == $answerformat) { /* Answer is to have $answerlength decimals */
|
||||||
/*** Adjust to the correct number of decimals ***/
|
/*** Adjust to the correct number of decimals ***/
|
||||||
if (stripos($answer, 'e')>0) {
|
if (stripos($answer, 'e')>0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue