I'm trying to author a problem which asks a student to enter the answer in a random number of significant digits. However, it seems WeBWorK allows some wrong answers. For example, if the correct answer is 12.34, WeBWorK accepts 12.33 and 12.35 as correct. Is there a quick way to fix this?
Thank you!
Carl Yao
DOCUMENT();
############################################################
# Load Macros
############################################################
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"PGcourse.pl",
);
############################################################
# Header
############################################################
#COMMENT('');
TEXT(beginproblem());
############################################################
# PG Setup
############################################################
Context("Numeric");
do {
$num1 = random(10,100,0.01);
$num2 = random(10,100,0.01);
$num3 = random(10,100,0.01);
$num4 = random(10,100,0.01);
$N = ($num1-$num2)/($num3-$num4);
} until ( $N>0 );
$b = $N;
$c = floor($b);
## Counting the no. of digits
## to the left of decimal point
## in the given no.
for ($i = 0; $b >= 1; ++$i){
$b = $b / 10;}
$n = ($i-2)>1 ? random($i-2,$i+3,1) : random(1,$i+3,1);
$d = $n - $i;
$b = $N;
$b = $b*10**$d;
$e = $b + 0.5;
if ($e == ceil($b)) {
$f = (ceil($b));
$h = $f - 2;
if ($h % 2 != 0) {
$e = $e - 1;
}
}
$j = floor($e);
$m = 10**$d;
$ans = $j / $m;
############################################################
# Body
############################################################
BEGIN_PGML
Calculate [`\frac{[$num1]-[$num2]}{[$num3]-[$num4]}`]
Give your answer correct to [`[$n]`] significant figures.
The answer is [______________]{$ans}.
END_PGML
############################################################
# Solution
############################################################
#BEGIN_PGML_SOLUTION
#END_PGML_SOLUTION
############################################################
# End Problem
############################################################
ENDDOCUMENT();