Accepting only a decimal answer

If there a way to code a problem to accept on a decimal value as an answer? In other words to not also accept the equivalent fractional value.

You can use a pattern match to check if it’s in fraction form, and then use an errorMessage to remind the student to write the number in decimal form.

p = patterns

isFraction = p.fraction(p.integer, p. integer).matches (this.latex)

errorMessage: when isFraction "Please enter the number in decimal form." otherwise ""

…or, for another strategy in your toolbox, you can utilize countNumberUsage:

check= this.numericValue=1.5 and countNumberUsage(this.latex)=1

Just be aware, only checking numericValue will also accept 1.5x, so you may want to add in another evaluation:

... and simpleFunction(this.latex).evaluateAt(10)=1.5

So how does this work if the current code is only:

disableEvaluation: true

correct: this.numericValue = 0.875

I didn’t look at your exact value. Change the 1.5 to 0.875.

The code in question takes the student input and turns it into a function, in my case, f(x)=1.5, so if you evaluate that function at any value you get 1.5. It’s just something to add on because desmos allows for “units” in a numericValue, so it treats 1.5x as though x is a unit.

Yes, I tried that and it still accepts 7/8 as correct. This lesson is about converting fractions to equivalent decimals. So, I clearly don’t want it to give credit for simply putting the fraction in for the answer.

Here is what I have:

disableEvaluation: true
check= this.numericValue=0.875 and countNumberUsage(this.latex)=0
correct: this.numericValue = 0.875

If you’re using @Daniel_Grubbs method, it should look like this.

disableEvaluation: true

check= this.numericValue=0.875 and countNumberUsage(this.latex)=1

correct: check

Your previous code still only checked for a numeric value of 7/8, so it was going to accept either form. You also need the countNumberUsage to be set to 1 since only one number should be the input. If a student enters a fraction, that is considered 2 numbers.

If you use the pattern match and errorMessage method that was also suggested, you can just use numericValue to check because a student wouldn’t be able to submit a fraction.

1 Like

disableEvaluation: true
check= this.numericValue=0.875 and countNumberUsage(this.latex)=1
correct: check

You could also use the countNumberUsage instead of the pattern matching for the errorMessage for similar results to @cwinske’s solution (i.e. student can’t submit a fraction).

Ah. I understand now. Thank you very much!

I use a variable, check, so that I can reference it for other things if necessary, like student feedback or hiding components.

Just as an aside here , I was having trouble as despite using disableEvaluation entering the actual question was still being evaluated. Turns out that unlike other assignements you can’t have a space after the colon

eg disableEvaluation:true

NOT

disableEvaluation: true

That doesn’t seem to be the case for me - it works with or without a space.

Are you sure there simply wasn’t a typo somewhere along the way?

image

image

From the image above. Actually it doesn’t matter if I have a space after the colon or not, its still not stopping the expression being evaluated and marked correct.

Or does it still evaluate the expression but just not display the evaluation so would mark this as correct? So I need to use latex to check for correctness?

disableEvaluation toggles the calculator displaying whatever student input evaluates to. numericValue in the CL will always calculate the decimal value of an expression (I’m not sure to how many places). It’s the reason for including countNumberUsage, which counts the instances of a specified number (not digit), in another response. You may also want to look into patterns.

1 Like